cub*_*l42 14 c++ overloading compiler-errors function c++11
#include <tuple>
template<int I>
struct A {};
template<int I, typename... T>
void f(A<I>, std::tuple<T *...>) {}
template<typename... T>
void f(A<0>, std::tuple<T *...>) {}
int main()
{
f(A<0>{}, std::tuple<char*, int*, float*>{});
}
Run Code Online (Sandbox Code Playgroud)
是不是f更专业的第二次超载?g ++ 4.9.2表示调用不明确,clang 3.6.0接受它.哪个编译器是对的?
有趣的是,如果你改变std::tuple<T *...>对std::tuple<T...>,G ++是与它的罚款,我不明白.