当前的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.
}
Run Code Online (Sandbox Code Playgroud)
这项更改确实可以节省很多打字。但是,这会使前端更加复杂。我不确定是否可行。
谢谢
Nat*_*ica 13
我看不到vector<auto> v = {1 ,2 3};被添加到C ++中。这样做的原因是因为C ++ 17已经具有类模板参数推导(CTAD)。这样您就可以像
std::vector v = {1, 2, 3};
Run Code Online (Sandbox Code Playgroud)
并且v将得到推导出一个std::vector<int>。