2014-05-21 39 views
-2
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?模糊调用带有sizeof条件的enable_if的方法条件

+0

http://stackoverflow.com/help/mcve –

+1

@πάνταῥεῖhttp://ideone.com/2PvkWk - 但是在你需要的问题中缺少哪些信息? – Appleshell

+1

当投票提出问题的人需要几秒钟的时间才能添加注释来解释原因时,这将会很棒。 – Appleshell

回答

3

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

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

注意添加typename::type