Ken*_*Lee 5 c++ decltype auto c++11
我正在学习C++ 11中的"decltype".
"auto"和"decltype"的功能似乎重复,我不明白为什么我们需要"decltype".
根据维基,其主要用途是在通用编程中,通常很难甚至不可能表达依赖于模板参数的类型.
在通用编程中,当难以表达类型时,我可以使用"auto":
template <typename T>
void MakeAnObject (const T& builder)
{
auto val = builder.MakeObject();
// do stuff with val
}
Run Code Online (Sandbox Code Playgroud)
我不明白为什么需要"decltype".
"decltype"可以做"自动"不能做的事情吗?
提前致谢.
Rei*_*ica 18
auto 表示"变量的类型是从初始化程序中推导出来的".
decltype 指任意上下文中的类型.
这是一个你不能使用的例子auto:
template <typename T, typename U, typename V>
void madd(const T &t, const U &u, const V &v, decltype(t * u + v) &res)
{
res = t * u + v;
}
Run Code Online (Sandbox Code Playgroud)
参数声明中没有初始化器(也没有),因此您无法auto在那里使用.
问题是,99%的用途decltype都在模板中.那里没有相同的功能.在非模板代码中,auto通常是您想要使用的.
| 归档时间: |
|
| 查看次数: |
1160 次 |
| 最近记录: |