шаблон-шаблон-параметр и понятия - PullRequest
0 голосов
/ 08 мая 2019

Можно ли написать концепты для параметра шаблона-шаблона?

В

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, поскольку он не объявлен в момент использования.

1 Ответ

0 голосов
/ 08 мая 2019
template<template<typename> typename T> requires a_concept<T<specific_type>> 
struct A {}
...