首页 > 解决方案 > 用户定义类型的 is_floating_point 特化

问题描述

我可以为用户定义的类定义 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;
}

标签: c++c++17

解决方案


No.std::is_floating_point<T>定义在“T 是浮点类型”时返回 true,然后标准规定“存在三种浮点类型:floatdoublelong double.

不留任何回旋余地。


推荐阅读