所以我有一个概念Fooable:

template <typename T>
concept bool Fooable()
{
    return requires(...){ ... };
}

而且我有一个类模板Bar,它使用T类型作为模板参数,并且我只想在TFooable时启用成员函数:
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>;

10-04 16:24