В this answer создать тип признака:Как я могу использовать result_of Вместо decltype?
template<typename T>
using to_string_t = decltype(to_string(declval<T>()));
Это работает просто отлично, но я изначально установить, чтобы использовать result_of
и теперь это irking мне, что я не могу понять, как это сделать.
Я пытаюсь заменить строку выше с чем-то вроде этого:
template<typename T>
using to_string_t = result_of<to_string(T)>;
Но я получаю ошибку компилятора вдоль линий:
ошибка C2275: «T»: недопустимый использование этого типа в качестве выражения
примечания: см декларирования «T»
ошибки C2974: «зОго :: result_of»: неверный аргумент шаблона для «_Fty», типа ожидается
Я пробовал несколько других входов до result_of
без успеха, может ли кто-нибудь помочь мне понять, какие аргументы ждут здесь result_of
?
'decltype (decltype (станд :: to_string (declval()) (declval ())' :) –
bolov
@bolov Отсутствует закрывающие скобки, но даже тогда вы звоните 'зЬй :: string' как функция ,Кроме того, это вряд ли избегает 'decltype' /' declval': p – Quentin
sry: здесь это: 'std :: result_of_t()) (std :: declval ()))> '(теперь тестировался, прошу про это). Но да, он использует decltype для получения результата 'to_string', чтобы создать тип, используемый в result_of, чтобы получить ... результат' to_string'. Но ... он использует 'result_of' :)) –
bolov