将来的C ++标准是否支持“使用auto声明类型模板参数”

时间:2019-10-10 16:48:20

标签: c++

当前的C ++标准已经支持“使用auto声明非类型模板参数”?

问题:将来的C ++标准是否支持“使用auto声明类型模板参数”

一旦支持,可以将STL容器更改为:

template<auto T>
class vector {

}
...
int main () {
    vector<auto> v = {1 ,2 3};
    vector<auto> v = {{1},{2},{3}}; // 2d vector.
}

此更改确实可以节省很多打字。但是,这会使前端更加复杂。我不确定是否可行。

谢谢

1 个答案:

答案 0 :(得分:13)

我看不到vector<auto> v = {1 ,2 3};被添加到C ++中。这样做的原因是因为C ++ 17已经具有Class Template Argument Deduction (CTAD)。这样您就可以像这样写代码了

std::vector v = {1, 2, 3};

v将被推导为std::vector<int>

相关问题