c++ - 我可以在没有任何实例变量的情况下使用 decltype 吗?

标签 c++ decltype

我正在使用一个库中的函数,该函数具有宏输出类型:

STRANGE_MACRO(something) the_function(Type1 t, Type2 u);

我想定义一个变量,它将采用此返回值,而无需先声明 Type1Type2

我希望这样的事情能奏效:

decltype(the_function(Type1, Type2)) return_value;

但它不起作用。我可以在不弄清楚宏的计算结果并且不先声明几个变量的情况下执行此操作吗?

最佳答案

这正是std::declval用于:

decltype(the_function(std::declval<Type1>(), std::declval<Type2>())) return_value;

关于c++ - 我可以在没有任何实例变量的情况下使用 decltype 吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44187711/

相关文章:

c++ - 为什么 ctime() 返回的字符串包含换行符?

c++ - 使用通用函数指针参数化函数模板的巧妙方法

c++ - decltype 中的成员函数调用

c++ - 有没有办法 decltype 不可调用函数的结果?

c++ - 从 C++ 到 Perl

c++ - 将结构添加到 std::list

c++ - C++代码的缓存优化

c++ - 比较相同类型的指针是否安全?

visual-c++ - 获取模板lambda参数的返回值,如何简化代码?

c++ - 使用 decltype() 和三元运算符有条件地选择类型