【发布时间】:2018-11-21 17:03:10
【问题描述】:
例如
#include "boost/type_traits.hpp"
template <bool enable>
struct Foo {
template <bool e = enable>
typename boost::enable_if_c<e,void>::type DoStuff(){}
};
int main(){
// Compiles
Foo<true>().DoStuff();
// Fails
Foo<false>().DoStuff();
}
将在现代编译器中工作,但不适用于 Visual Studio 2010,它不允许函数/方法的默认模板参数。是否有另一种方法来制定适用于 VS2010 的相同任务?
【问题讨论】:
-
对于 false 的无法编译的模板特化怎么办?
-
我不太清楚你的意思抱歉。
-
标签调度/完全专业化/或CRTP
-
您可以在 void DoStuff(){} 中使用某种 static_assert 创建 Foo
的特化。或者就像@NathanOliver 说的那样做) -
@jesper 遗留代码与付费客户的遗留支持合同。也就是现实世界。
标签: c++ visual-studio-2010 enable-if