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

标签 c++ c++11

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;

关于c++ - 在 C++ 中,是否可以获取函数的返回类型以便在不调用该函数的情况下声明一个变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8593293/

相关文章:

c++ - 通过 C++ write 语句将文本加粗

c++ - 如果涉及委托(delegate),C++ 中的 RVO 和查询结果作为对象或更好地通过引用传递

c++ - VS2010 VC++找不到可执行文件

c++ - Linux下的服务,一种现代方法?

c++ - 当基类不是时,为什么派生类可以 move 构造?

c++ - 外部 C++ 库链接问题

C++ 嵌套类可访问性

c++ - 在编译时将 std::array 转换为另一种数据类型?

c++ - 放置新的和完美的转发

c++ - 可变参数模板模板参数