使用概念启用 class 个模板的成员函数
Enable member functions of class templates using concepts
所以我有一个概念Fooable
:
template <typename T>
concept bool Fooable()
{
return requires(...){ ... };
}
而且我有一个 class 模板 Bar
将类型 T
作为模板参数,我只想在 T
为 [=13] 时启用成员函数=]:
template <typename T>
class Bar
{
public:
template // ???
requires Fooable<T>
void MemFun();
};
C++17 中的概念 TS 或 C++2a 中是否可能?
在 Concepts TS 和 C++20 设计中,函数都有一个可选的尾随 requires-clause。所以你不需要让你的成员函数成为模板来约束它:
void MemFun() requires Fooable<T>;
约束可以在尾随位置的函数之后:
template <typename T>
class Bar
{
public:
void MemFun() requires Fooable<T>;
};
所以我有一个概念Fooable
:
template <typename T>
concept bool Fooable()
{
return requires(...){ ... };
}
而且我有一个 class 模板 Bar
将类型 T
作为模板参数,我只想在 T
为 [=13] 时启用成员函数=]:
template <typename T>
class Bar
{
public:
template // ???
requires Fooable<T>
void MemFun();
};
C++17 中的概念 TS 或 C++2a 中是否可能?
在 Concepts TS 和 C++20 设计中,函数都有一个可选的尾随 requires-clause。所以你不需要让你的成员函数成为模板来约束它:
void MemFun() requires Fooable<T>;
约束可以在尾随位置的函数之后:
template <typename T>
class Bar
{
public:
void MemFun() requires Fooable<T>;
};