模板 - 网板参数和概念

template-template-parameter and concepts

本文关键字:参数 模板      更新时间:2023-10-16

是否可以为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,因为它在使用点没有声明。

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