使用概念启用类模板的成员函数

时间:2018-07-19 22:16:03

标签: c++ c++17 c++-concepts c++20

所以我有一个概念preg_match_all($pattern, $string, $out);

$out

我有一个类模板$key[1],它使用类型Fooable作为模板参数,并且我只想在template <typename T> concept bool Fooable() { return requires(...){ ... }; } Bar的情况下启用成员函数:

T

在带有概念TS的C ++ 17中还是在C ++ 2a中是否可能?

2 个答案:

答案 0 :(得分:11)

在Concepts TS和C ++ 20设计中,函数均具有可选的尾随 requires-clause 。因此,您无需使成员函数成为模板即可对其进行约束:

void MemFun() requires Fooable<T>;

答案 1 :(得分:4)

在函数的尾随位置可以使用约束:

template <typename T>
class Bar
{
public:
    void MemFun() requires Fooable<T>;
};

Live on Godbolt