Карта сайта Kansoftware
НОВОСТИУСЛУГИРЕШЕНИЯКОНТАКТЫ
Разработка программного обеспечения

function_traits

Boost , Chapter 1. Boost.TypeTraits , Alphabetical Reference

Boost C++ Libraries

...one of the most highly regarded and expertly designed C++ library projects in the world. Herb Sutter and Andrei Alexandrescu, C++ Coding Standards

PrevUpHomeNext
template <class F>
struct function_traits
{
   static const std::size_t    arity = see-below;
   typedef see-below           result_type;
   typedef see-below           argN_type;
};

Функция шаблона класса_traits будет компилироваться только в том случае, если:

  • Компилятор поддерживает частичную специализацию шаблонов классов.
  • Аргумент шаблона<F>является типом функцииОбратите внимание, что этоне являетсяТо же самое, чтоуказывает на функцию.
[Tip] Tip

Функция_traits предназначена для интроспектирования только функций C++ формы R (), R (A1), R (A1, ... и т.д.), а не указателей функций или функций членов класса. Для преобразования типа указателя функции в подходящий тип используютremove_pointer.

Table 1.20. Function Traits Members

член

Описание

<function_traits<F>::arity>

Интегральное постоянное выражение, дающее число аргументов, принятых типом функции<F>.

<function_traits<F>::result_type>

Тип, возвращаемый типом функции<F>

.

<function_traits<F>::argN>Тип

<N>тип аргумента функции<F>, где<1<= N<= arity><F>

.

Table 1.21. Examples

выражение

Результат

<function_traits<void (void)>::arity>

Интегральное постоянное выражение, имеющее значение 0.

<function_traits<long (int)>::arity>

Интегральное постоянное выражение, имеющее значение 1.

<function_traits<long (int,long,double,void*)>::arity>

Интегральное постоянное выражение, имеющее значение 4.

<function_traits<void (void)>::result_type>

Тип<void>

<function_traits<long (int)>::result_type>

Тип<long>

.

<function_traits<long (int)>::arg1_type>

Тип<int>

.

<function_traits<long (int,long,double,void*)>::arg4_type>

Тип<void*>

.

<function_traits<long (int,long,double,void*)>::arg5_type>

Ошибка компилятора: нет<arg5_type>, поскольку есть только четыре аргумента.

<function_traits<long (*)(void)>::arity>

Ошибка компилятора: тип аргумента — указатель функции, а не тип функции

.

Совместимость компиляторов:Все текущие компиляторы поддерживаются этой чертой.


PrevUpHomeNext

Статья function_traits раздела Chapter 1. Boost.TypeTraits Alphabetical Reference может быть полезна для разработчиков на c++ и boost.




Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.



:: Главная :: Alphabetical Reference ::


реклама


©KANSoftWare (разработка программного обеспечения, создание программ, создание интерактивных сайтов), 2007
Top.Mail.Ru

Время компиляции файла: 2024-08-30 11:47:00
2025-05-19 20:56:53/0.0066468715667725/0