2017-02-01 3 views
0

Есть ли готовая функция, которая может принимать параметр шаблона в качестве аргумента и определять, что это определенные пользователем типы (класс или структура) или встроенные типы данных (int, float, char ...)?Оценка параметра шаблона

+0

Отъезд [''] (http://en.cppreference.com/w/cpp/header/type_traits) – NathanOliver

ответ

0

Вы ищете шаблон std::is_arithmetic, который определяет, является ли параметр шаблона целым или с плавающей точкой.

В процессе исключения единственными оставшимися параметрами являются: указатель или ссылка, класс и void. Может быть, и переименование. Из вашего вопроса неясно, как вы хотите их классифицировать, но, если необходимо, добавление некоторых дополнительных проверок поверх std::is_arithmetic должно позволить устранить этот тип еще раз.

+0

Примечание: 'std :: is_fundamental' охватывает' void' и 'std :: nullptr_t' дополнительно к арифметическим типам. Кроме того, существуют массивы, указатели и указатели-члены и ссылки. Может быть проще начать с 'is_class' и' is_union' и проверить, не сработают ли они, а также удалить cv-квалификаторы и указатели и/или ссылки в зависимости от того, что именно хочет OP. – chris

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