Очевидно, вы можете получить возвращаемый тип функции с помощью decltype (foo()), но если foo принимает аргументы, которые не будут работать, вам придется передать некоторые фиктивные аргументы в foo, чтобы он работал. Но есть ли способ получить возвращаемый тип функции без необходимости передавать ей какие-либо аргументы?Можно ли получить возвращаемый тип функции, не передавая ей аргументы?
3
A
ответ
7
Предположив тип возвращаемого значения не зависит от типа аргумента (в этом случае вы должны использовать что-то вроде std::result_of
, но вы должны предоставить тип этих аргументов), вы можете написать простой тип черта, которая позволяет вывести тип возвращаемого типа функции:
#include <type_traits>
template<typename T>
struct return_type;
template<typename R, typename... Args>
struct return_type<R(Args...)>
{
using type = R;
};
int foo(double, int);
int main()
{
using return_of_foo = return_type<decltype(foo)>::type;
static_assert(std::is_same<return_of_foo, int>::value, "!");
}
6
C++ 11 предоставляет std::result_of
.
http://en.cppreference.com/w/cpp/types/result_of
В случае, когда функция принимает аргументы, вы можете предоставить «фиктивные» аргументы std::declval
.
Смежные вопросы
- 1. Динамические аргументы и возвращаемый тип
- 2. Получить возвращаемый тип предлагаемой функции в Jedi
- 3. Функция ловушки, передавая аргументы?
- 4. PgAdmin Возвращаемый тип функции
- 5. Как получить параметры функции Scala/возвращаемый тип?
- 6. В C++ можно ли получить возвращаемый тип функции, чтобы объявить переменную без вызова этой функции?
- 7. Получить возвращаемый тип функции в шаблоне
- 8. C++ Bind возвращаемый тип шаблона Аргументы
- 9. Js, передавая аргументы функции в событии
- 10. Haskell: Есть ли способ вывести возвращаемый тип функции изнутри функции?
- 11. C++ указатель как возвращаемый тип из функции
- 12. C++ возвращаемый тип от функции
- 13. вызов функции динамически, передавая аргументы из переменной
- 14. JS и JQuery, передавая аргументы функции
- 15. Можно ли использовать переменную внутри функции PHP, не передавая ее?
- 16. питон передавая позиционные аргументы другой функции вызова
- 17. Setuptools не передавая аргументы entry_points
- 18. this.location, не передавая аргументы json
- 19. Как визуализировать не частичную компоновку, передавая ей блок?
- 20. Можно ли динамически определять аргументы функции?
- 21. Java переменная возвращаемый тип функции в перечислении
- 22. Можно ли настроить тип mime, возвращаемый grunt-contrib-connect?
- 23. Можно ли присвоить все импортированные модули как возвращаемый тип?
- 24. Получить возвращаемый тип метода из указателя функции-члена
- 25. MATLAB: передавая аргументы ячейки
- 26. Как получить возвращаемый тип конструктора lambda
- 27. Как получить возвращаемый тип функции-члена из класса?
- 28. Можно ли ограничить аргументы НЕ делегатами?
- 29. Возвращаемый тип nullable в функции SQL Server
- 30. Как получить возвращаемый тип функции для использования в шаблоне?
тип возвращаемого значения зависит от аргумента типа –
Передайте вашу функцию в качестве аргумента в функции шаблона принимая Ret (*) (арг ...), и пусть компилятор выводит R. Он может работать только без перегрузки, очевидно. –