【问题标题】:ambiguous call to method with enable_if with sizeof... condition使用 enable_if 和 sizeof... 条件对方法进行模棱两可的调用
【发布时间】:2014-05-21 21:04:47
【问题描述】:
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&lt;double&gt;(value) 是模棱两可的。但是,sizeof... 只能是 0 或者不是 0,为什么会模棱两可呢?

【问题讨论】:

  • @πάνταῥεῖ ideone.com/2PvkWk - 但是您需要的问题中缺少哪些信息?
  • 如果投票否决问题的人需要几秒钟的时间来添加解释原因的评论,那就太好了。

标签: c++ templates typetraits


【解决方案1】:

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

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

注意添加的typename::type

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-03-30
    • 1970-01-01
    • 2019-12-13
    • 1970-01-01
    • 2019-09-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多