Наследники:Если T является (возможно, cv-квалифицированным) типом функции, то наследуется отtrue_type.Фальшивый_тип. Обратите внимание, что этот шаблон не обнаруживаетуказателей на функцииилиссылок на функции, они обнаруживаютсяis_pointerиis_referenceсоответственно:
typedefintf1();// f1 is of function type.typedefint(*f2)();// f2 is a pointer to a function.typedefint(&f3)();// f3 is a reference to a function.
С++ Стандартная ссылка:3.9.2p1 и 8.3.5.
Совместимость компиляторов:Все текущие компиляторы поддерживаются этой чертой.
<is_function<long(double,int)>::value>является интегральным постоянным выражением, которое оцениваетистинно.
<is_function<long(*)(double,int)>::value>является интегральным постоянным выражением, которое оцениваетложно: Аргументом в данном случае является тип указателя, а не тип функции.
<is_function<long(&)(double,int)>::value>является интегральным постоянным выражением, которое оцениваетложно: Аргументом в данном случае является ссылка на функцию, а не на тип функции.
<is_function<long(MyClass::*)(double,int)>::value>является интегральным постоянным выражением, которое оценивает доложного: Аргумент в данном случае является указателем на функцию члена.
<is_function<T>::value_type>является типом<bool>.
Tip
Не путайте типы функций с указателями на функции:
<typedefintf(double);>
определяет тип функции,
<ffoo;>
объявляет прототип для функции типа<f>,
<f*pf=foo;>
<f&fr=foo;>
Заявляет указатель и ссылку на функцию<foo>.
Если вы хотите определить, является ли какой-либо тип указателем на функцию, используйте:
Статья is_function раздела Chapter 1. Boost.TypeTraits Alphabetical Reference может быть полезна для разработчиков на c++ и boost.
Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.