c++ - 在 C++ 中,是否可以获取函数的返回类型以便在不调用该函数的情况下声明一个变量?

int myfun()
{
  return 42;
}

我知道我会写

auto myvar = myfun();

但如果我只想声明 myvar(不使用通用 typedef)怎么办?

the_type_returned_by_myfun myvar;

可以写什么来代替the_type_returned_by_myfun

最佳答案

你可以使用decltype

decltype(myfun()) myvar;
// or
typedef decltype(myfun()) myfun_ret;
myfun_ret myvar2;

如果函数恰好有参数,你可以使用 std::declval 生成假参数。

#include <utility>

int my_other_fun(foo f);
typedef decltype(myfun(std::declval<foo>())) my_other_fun;

https://stackoverflow.com/questions/8593293/

相关文章:

c++ - 使用 boost::graph 获取特定边缘

c++ - 如何检查 STL 迭代器是否指向任何东西?

c++ - 有没有办法在 Visual Studio 中获取某些 c++ 函数的调用图?

c++ - 对两个对应的数组进行排序

c++ - 类成员和显式堆栈/堆分配

c++ - 如何以跨平台的方式获取(几乎)唯一的系统标识符?

c++ - 如何在互斥锁中优先考虑特权线程?

c++ - 如何在编译时检查两种类型是否相同(如果它与 Boost strong typedef 一

c++ - Visual Studio 可以在重建前提示吗?

c++ - 如何获得 high_resolution_clock 的精度?