int myfun()
{
return 42;
}
我知道我可以写
auto myvar = myfun();
但如果我只是想声明myvar
(不使用公共typedef
)该怎么办?
the_type_returned_by_myfun myvar;
可以写什么而不是the_type_returned_by_myfun
?
答案 0 :(得分:33)
您可以使用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;
答案 1 :(得分:9)
decltype是你的朋友:
decltype(myfun()) myvar;
答案 2 :(得分:6)
这是decltype
:
decltype(myfun()) myvar;