使用带有sizeof ...条件的enable_if对方法进行模糊调用

时间:2014-05-21 21:04:47

标签: c++ templates typetraits

template<typename... Tn>
std::enable_if<sizeof...(Tn) == 0, void>
insert(T&& value) {
}
template<typename... Tn>
std::enable_if<sizeof...(Tn) != 0, void>
insert(T&& value) {
}

根据编译错误,调用例如obj.insert<double>(value)含糊不清。但是,当sizeof...只能是0或不是0时,为什么它不明确?

1 个答案:

答案 0 :(得分:3)

声明格式不正确。正确的语法是:

template<typename... Tn>
typename std::enable_if<sizeof...(Tn) == 0, void>::type
insert(T&& value) {
}

请注意添加的typename::type