我正在使用具有宏观输出类型的库的函数:
STRANGE_MACRO(something) the_function(Type1 t, Type2 u);
我想定义一个变量来获取此返回值,而不先声明Type1
或Type2
。
我希望这样的东西能起作用:
decltype(the_function(Type1, Type2)) return_value;
但它不起作用。我可以在不知道宏评估的内容而不首先声明几个变量的情况下这样做吗?
答案 0 :(得分:9)
这正是std::declval
的用途:
decltype(the_function(std::declval<Type1>(), std::declval<Type2>())) return_value;