【发布时间】:2019-07-12 23:40:26
【问题描述】:
为什么在 C++ 中不允许这样的构造:
#include <type_traits>
template<std::enable_if_t<true, bool> = true>
void fn() {}
template<std::enable_if_t<false, bool> = true>
void fn() {}
int main()
{
fn();
return 0;
}
编译器似乎在抱怨enable_if 缺少我相信的模板参数这一事实?有没有办法在不引入另一个模板参数设置为某些默认值的情况下实现上述行为?
【问题讨论】:
-
您可能简化了一点。声明永远不能使用的东西是没有意义的。
-
没有S就不是SFINAE!
-
@aschepler 我明白这一点,我只是好奇如何编译上述或类似的东西,如果有的话。
-
@0x499602D2 公平点。我仍然希望实现类似于部分专业化的行为,假设第二个根本不是定义的专业化。
标签: c++ templates c++17 enable-if non-type