template<typename T0, typename T1, typename ...ArgN>
bool is_any_test(T0 arg0, T1 arg1, ArgN... argn...)
{
return arg0 == arg1 || is_any_test<T0, ArgN...>(arg0, argn...);
};
template<typename T0, typename T1>
bool is_any_test(T0 arg0, T1 arg1)
{
return arg0 == arg1;
};
int wmain(int /*argc*/, const wchar_t* /*argv[]*/)
{
is_any_test(3,4);
return 0;
};
(可以在這裏http://webcompiler.cloudapp.net/運行)
在VS2015這導致
C2668 ambiguous call to overloaded function
在VS2013這個工作得很好。 這是一個錯誤還是我錯過了什麼? 有沒有工作? (改變所有的occurancies爲純IFS - 不是一個選項)
函數定義中應該是'ArgN ... argn',而不是'ArgN ... argn ...'。 'argn ...'基本上是告訴參數包擴展,這不是你想要的。 – DeiDei
@DeiDei'ArgN ... argn ...'實際上被解析爲一個參數包,後面跟着一個c-style variadic參數 –
你沒錯!非常感謝。 –