自动模板参数

时间:2016-01-17 16:07:29

标签: c++ templates language-lawyer c++14 auto

请考虑以下代码段:

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 ++标准版)。我想很多事情都发生了变化。

0 个答案:

没有答案