int myfun()
{
return 42;
}
Run Code Online (Sandbox Code Playgroud)
我知道我可以写
auto myvar = myfun();
Run Code Online (Sandbox Code Playgroud)
但是,如果我只是想声明myvar(不使用常见的typedef)怎么办?
the_type_returned_by_myfun myvar;
Run Code Online (Sandbox Code Playgroud)
什么可以写而不是the_type_returned_by_myfun?
Xeo*_*Xeo 33
你可以用decltype.
decltype(myfun()) myvar;
// or
typedef decltype(myfun()) myfun_ret;
myfun_ret myvar2;
Run Code Online (Sandbox Code Playgroud)
如果函数恰好有参数,你可以生成伪参数std::declval.
#include <utility>
int my_other_fun(foo f);
typedef decltype(myfun(std::declval<foo>())) my_other_fun;
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
504 次 |
| 最近记录: |