2016-03-29 5 views
1

Когда я попытался выполнить собственную реализацию признаков типа, я сравнил результаты с 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.

+1

Какую часть страницы вы связываете, так как вы считаете, что 'float (int) const' должен быть классом, объединением или типом массива? – user2357112

+0

Тот факт, что он сложный, но не скалярный, оставляет только эти 3 возможности. –

+0

Кроме того, вы разместили 10 строк, которые должны печатать один бит вывода каждый, но только 8 бит вывода. Ваш код и результат не совпадают. – user2357112

ответ

1

Это ошибка в реализации MSVS; float(int) const is both function and compound.

Поднимите его на Connect, если его еще нет (что, похоже, не так).

Я подозреваю, что конечный const (который должен быть проигнорирован/лишен) отбрасывает вещи.

+0

Похоже, что в случае частичной специализации шаблона для функций remove_cv не работает. Внедрение GCC специализируется на каждой возможной комбинации cv. –

Смежные вопросы