std::experimental:: invocation_type, std::experimental:: raw_invocation_type
|
Определено в заголовке
<experimental/type_traits>
|
||
|
template
<
class
>
struct
raw_invocation_type
;
//не определено
|
(1) | (техническая спецификация библиотеки fundamentals) |
|
template
<
class
>
struct
invocation_type
;
//не определено
|
(2) | (техническая спецификация библиотеки fundamentals) |
Вычисляет
параметры вызова
, когда
Fn
вызывается с аргументами
ArgTypes...
, как в
INVOKE
(
std::
declval
<
Fn
>
(
)
,
std::
declval
<
ArgTypes
>
(
)
...
)
, где
INVOKE
— это операция, определённая в
Callable
.
Параметры вызова
выражения
INVOKE
(
f, t1, t2, ..., tN
)
определяются следующим образом, где
T1
— это (возможно, cv-квалифицированный) тип
t1
, а
U1
— это
T1&
, если
t1
является lvalue, и
T1&&
в противном случае:
-
Если
fявляется указателем на метод классаT, то параметры вызова -U1, за которым следуют параметрыf, соответствующиеt2, ..., tN. -
Если
N == 1иfявляется указателем на поле данных классаT, то параметр вызова -U1. -
Если
fявляется объектом классового типа, то параметры вызова - это параметры, соответствующиеt1, ..., tNнаиболее подходящей допустимой функции для аргументовt1, ..., tNсреди операторов вызова функции и суррогатных функций вызоваf. -
Во всех остальных случаях параметры вызова - это параметры
f, соответствующиеt1, ..., tN.
Если аргумент
tI
соответствует многоточию в списке параметров функции, соответствующий параметр вызова является результатом применения стандартных преобразований аргументов по умолчанию к
tI
.
Fn
и все типы в
ArgTypes
могут быть любыми полными типами, массивами неизвестной границы или (возможно, cv-квалифицированным)
void
.
Содержание |
Типы членов
| Тип члена | Определение |
| raw_invocation_type < Fn ( ArgTypes... ) > :: type |
R
(
T1, T2, ...
)
, где:
Определяется только если
|
| invocation_type < Fn ( ArgTypes... ) > :: type |
R
(
U1, U2, ...
)
, где
Определяется только если
|
Вспомогательные типы
|
template
<
class
T
>
using raw_invocation_type_t = typename raw_invocation_type < T > :: type ; |
(техническая спецификация библиотеки fundamentals) | |
|
template
<
class
T
>
using invocation_type_t = typename invocation_type < T > :: type ; |
(техническая спецификация библиотеки fundamentals) | |
Пример
|
Этот раздел не завершён
Причина: отсутствует пример |
Смотрите также
|
C++ documentation
для
Reflection TS
|