输入float(int)const的特征

时间:2016-03-29 00:07:04

标签: c++ templates typetraits

当我尝试自己实现类型特征时,我将结果与std <type_traits>进行了比较。我试图检查类型float (int) const的类型特征,我认为它应该是函数。我得到了奇怪的结果,所以我试图将这种类型传递给std类型的特征。这是我的测试代码:

std::cout << std::is_function<float (int) const>::value;
std::cout << std::is_compound<float(int) const>::value;
std::cout << std::is_pointer<float(int)const>::value;
std::cout << std::is_class<float(int)const>::value;
std::cout << std::is_union<float(int)const>::value;
std::cout << std::is_member_pointer<float(int)const>::value;
std::cout << std::is_array<float(int)const>::value;
std::cout << std::is_scalar<float(int)const>::value;
std::cout << std::is_enum<float(int)const>::value;
std::cout << std::is_object<float(int)const>::value;

此测试的输出如下:

0100000001

意思是,这种类型是复合&amp;对象,但不是标量。根据{{​​3}},它应该是class,union或array,其中没有一个是真的。这种类型的结果应该是什么?我正在使用MSVC 2015。

1 个答案:

答案 0 :(得分:1)

这是MSVS实施中的一个错误; float(int) const is both function and compound

如果它已经存在(它似乎不是),请在Connect上进行提升。

我怀疑尾随const(应该被忽略/剥离)会让事情失效。