当前的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.
}
此更改确实可以节省很多打字。但是,这会使前端更加复杂。我不确定是否可行。
谢谢
答案 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>
。