Можно ли написать концепты для параметра шаблона-шаблона?
В
template<template<typename> typename T> struct A {};
Я хочу проверить, удовлетворяет ли конкретная реализация T
концепту.
Пример:
template<typename F>
concept bool HasF = requires(F) {
F::f();
};
template<typename T>
struct Test1 {
static void f() {}
};
template<typename T>
struct Test2 {
};
template<template<typename> typename T>
//requires HasF<T<B>> // not possible
struct A {
struct B {
};
};
using x1 = A<Test1>;
using x2 = A<Test2>; // should fail
В приведенном выше примере я не могу использовать B
, поскольку он не объявлен в момент использования.