【发布时间】:2017-11-19 22:22:51
【问题描述】:
给定一个简单的变量模板
template<typename... T>
class A {};
还有两个或多个概念C1和C2之类的
template<typename T>
concept bool C1() { ... };
如何在A 的参数包的所有元素上应用C1 和C2 的连词,例如:
template<typename... T>
requires C1<T>... || C2<T>... // nok
class A {};
以上内容无法编译。我正在寻找一种方法来指定这一点,而无需编写像 C1orC2 这样的新概念。
【问题讨论】:
-
我认为你刚刚弄错了折叠表达式语法。这是
(C1<T> || ...) || (C2<T> || ...)。如果你的意思是参数包应该作为一个整体应用C1<T...> || C2<T...> -
我在表述概念时犯了一个错误,已编辑。
标签: c++ variadic-templates c++-concepts c++20