请考虑以下代码段:
template <class T>
struct S {
S(const T&) {}
};
int main() {
S<int> i{42}; // ok
S<double> d(2.5); // ok
S<auto> f = 0.5f; // fail. wants `float` for `auto`
S<auto> l{10L}; // fail. wants `long` for `auto`
}
使用c++14
选项编译失败。
但我想知道在标准中禁止这一点的真正原因是什么。
我的问题是为什么在模板参数中不可能使用auto
。我不想完全删除类型名称中的<type>
,因为@yesraaj想要在question中标记为重复。
此外,从该问题开始,已经过去了6年(并且已经发布了2个版本的c ++标准版)。我想很多事情都发生了变化。