【发布时间】:2018-12-28 04:05:49
【问题描述】:
所以我有一个概念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();
};
在 C++17 中是否可以使用概念 TS 或在 C++2a 中?
【问题讨论】:
-
不是答案,但如果您实际上不需要禁用函数来不参与重载解决方案,您可以简单地使用
static_assert。 -
@HolyBlackCat 我在测试中进行了完整的模板实例化,以查看所有成员函数是否正确。添加 static_assert 会破坏其中的一些。
-
通过概念 TS 可以通过
void MemFun() requires Fooable<T>() {}
标签: c++ c++17 c++-concepts c++20