#c #c 17
#c #c 17
Вопрос:
Могу ли я определить is_floating_point для пользовательского класса? Я пробовал это. Но is_floating_point возвращает false .
class Test
{
public:
Test() { x = 0; }
private:
float x;
};
template<>
struct is_floating_point<Test>
{
static constexpr bool value = true;
};
void main()
{
std::cout<<std::is_floating_point<Test>::value<<endl;
}
Комментарии:
1. Создайте свой собственный
is_floating_point
, который допускает обычные плавающие точки и ваши собственные.
Ответ №1:
Номер std::is_floating_point<T>
определяется как возвращающий true, когда «T — тип с плавающей запятой», а затем в стандарте указывается, что «Существует три типа с плавающей запятой: float
, double
, и long double
.
Не оставляет места для маневра.
Комментарии:
1. cppreference также проясняет это: » Поведение программы, которая добавляет специализации для
is_floating_point
(илиis_floating_point_v
), не определено».