我想使用概念来区分一维和二维容器。我的第一次尝试如下:
template<typename C>
concept Container1D = requires(C c) {
std::begin(c);
std::end(c);
c[0];
};
template<typename C>
concept Container2D = requires(C c) {
std::begin(c);
std::end(c);
c[0, 0]; // interpreted as comma-operator
};
但显然这不起作用,因为表达式0, 0
被解释为逗号运算符,因此第二个概念也匹配一维容器。
有没有办法要求二维operator[a, b]
?