假设我们有一个consteval
函数或一个带有构造函数的普通结构,consteval
它只接受一些值:
struct A
{
consteval A(int a)
{
// compile error if a < 0
if (a < 0)
throw "error";
}
};
有没有办法检测 int 的非类型模板参数是否可以被这样的构造函数接受?我尝试了以下代码但失败了。
template <int a> concept accepted_by_A = requires() {A(a);};
int main()
{
std::cout << accepted_by_A<-1> << std::endl; // output 1 (true)
}