模板-模板-参数和概念

时间:2019-05-08 05:53:11

标签: c++ c++-concepts template-templates

是否可以为template-template参数编写概念?

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 :(得分:0)

template<template<typename> typename T> requires a_concept<T<specific_type>> 
struct A {}