【发布时间】:2021-07-05 19:14:18
【问题描述】:
我有两种类型A 和A_Input。 A 由 A_Input 构造而成。
我想定义一个模板类B,它有两个模板参数T 和U。然后我想为B 定义一个约束,要求T 有一个接受U 的构造函数。
我写这样一个B 的尝试如下:
template<typename T, typename U>
requires requires (U u) {
T::T(u);
}
class B {
public:
B(){}
void speak() {
std::cout << "success!";
}
};
一个例子T 是class A 并且隐含的U 是A_Inputs 下面提供:
class A_Inputs {
public:
A_Inputs(){}
};
class A {
public:
A(A_Inputs ain){}
};
然后我使用以下 main 函数测试所有内容:
int main() {
B<A, A_Inputs> b{};
b.speak();
return 0;
}
这会给
error C7602: 'B': the associated constraints are not satisfied
【问题讨论】:
标签: c++ templates constraints c++20 c++-concepts