pep*_*ico 7 c++ templates auto c++11 type-deduction
int v[1];
auto p1 = v;
auto &p2 = v;
auto *p3 = v;
Run Code Online (Sandbox Code Playgroud)
p1属于int *(相同p3).特别是在这个简单的示例中,我发现p2(int (&)[1]),因为它inherents阵列语义更加有用,例如,我可以申请sizeof上p2给予一样sizeof的v.
是否有关于此的标准报价?
为什么默认参考是一个坏主意?(对于这个数组的情况,我的意思是,这些天几乎没有c ++程序员关心它们......)
我相信这是为了与非模板函数保持一致。数组在任何时候被访问时都会经历数组到指针的转换,除非绑定到引用。因此与现有规则一致的是:
int v[1];
void foo(int *);
int main()
{
foo(v);
}
Run Code Online (Sandbox Code Playgroud)
和
int v[1];
template <class T>
void foo(T);
int main()
{
foo(v);
}
Run Code Online (Sandbox Code Playgroud)