我正在尝试将在单个模板类上定义的概念应用于多个模板类,我这样做了:
template<template<class> class F, class T, class... Ts>
requires F<T>::value
struct check_concept
{
constexpr bool value = check_concept<F, Ts...>::value;
};
template<template<class> class F, class T>
requires F<T>::value
struct check_concept<F, T>
{
constexpr bool value = true;
};
我收到一条错误消息:
'check_concept<F,T,>::value' cannot be declared with 'constexpr' specifier
。
我想做这样的事情:
template<class... Ts>
requires check_concept<std::is_arithmetic, Ts...>::value;
class A
{
//Implementation Details
}
我每次都尝试从
check_concept<template<class> class F, class... Ts>
继承,但仍然失败。
@Ted Lyngmo 提出了以下可行的答案(在
static
之前添加 constexpr
):
template<template<class> class F, class T, class... Ts>
requires F<T>::value
struct check_concept
{
static constexpr bool value = check_concept<F, Ts...>::value;
};
template<template<class> class F, class T>
requires F<T>::value
struct check_concept<F, T>
{
static constexpr bool value = true;
};
然后这有效:
constexpr bool v = check_concept<std::is_arithmetic, double, int>::value; //true