Учитывая простой шаблон variadoc
template<typename... T>
class A {};
и две или более концепции C1
а также C2
лайк
template<typename T>
concept bool C1() { ... };
как я могу применить соединение C1
а также C2
на всех элементах пакета параметров A
лайк:
template<typename... T>
requires C1<T>... || C2<T>... // nok
class A {};
Выше не компилируется. Я ищу способ указать это без написания новой концепции, как C1orC2
,
Вы можете вложить выражения сложения для этого:
template<typename... T>
requires ((C1<T> || C2<T>) || ...)
class A {};
Кроме того, фактическая концепция должна иметь форму:
template<typename T>
concept C1 = requires(T arg) {
// something
};
Других решений пока нет …