所以我有一个概念Fooable
:
template <typename T>
concept bool Fooable()
{
return requires(...){ ... };
}
而且我有一个类模板
Bar
,它使用T
类型作为模板参数,并且我只想在T
为Fooable
时启用成员函数:template <typename T>
class Bar
{
public:
template // ???
requires Fooable<T>
void MemFun();
};
在带有概念TS的C++ 17中或在C++ 2a中是否可能?
最佳答案
在Concepts TS和C++ 20设计中,函数都有一个可选的尾随需求句。因此,您无需使您的成员函数成为模板即可对其进行约束:
void MemFun() requires Fooable<T>;