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/