wim*_*aan 2 c++ c++-concepts c++17
我尝试使用约束进行类专门化:
struct A {};
struct B {};
struct C {};
template<typename T>
concept bool AorB() {
return std::is_same<T, A>::value || std::is_same<T, B>::value;
}
template<typename T>
class X {};
template<AorB T>
class X {};
int main() {
X<A> x1; // error: redeclaration 'template<class T> class X' with different constraints class X {};
X<B> x2;
X<C> x3;
}
Run Code Online (Sandbox Code Playgroud)
我不知道我在这里犯了错误,或者这一般是不可能的?
有什么可以替代这种方法?我可以使用CRTP到一个公共基本模板的专业化,但这对我来说看起来很难看.
这不是专业化,您实际上重新声明了主模板,这确实是一个错误.
专业化将如下所示:
template<typename T>
class X { };
template<AorB T>
class X<T> { };
// ^^^
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
230 次 |
| 最近记录: |