Когда я попытался выполнить собственную реализацию признаков типа, я сравнил результаты с std <type_traits>
. Я попытался проверить типовые черты типа float (int) const
, которые, как я думал, должны функционировать. У меня странные результаты, поэтому я попытался передать этот тип методам std. Вот мой тестовый код:Типовые черты float (int) const
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
Значение, что этот тип соединение & объекта, но не скаляр. Согласно http://www.cplusplus.com/reference/type_traits/, это должен быть класс, объединение или массив, ни один из которых не является истинным. Каким должен быть правильный результат для этого типа? Я использую MSVC 2015.
Какую часть страницы вы связываете, так как вы считаете, что 'float (int) const' должен быть классом, объединением или типом массива? – user2357112
Тот факт, что он сложный, но не скалярный, оставляет только эти 3 возможности. –
Кроме того, вы разместили 10 строк, которые должны печатать один бит вывода каждый, но только 8 бит вывода. Ваш код и результат не совпадают. – user2357112