当我尝试自己实现类型特征时,我将结果与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。
答案 0 :(得分:1)
这是MSVS实施中的一个错误; float(int) const
is both function and compound
如果它已经存在(它似乎不是),请在Connect上进行提升。
我怀疑尾随const
(应该被忽略/剥离)会让事情失效。