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/