pre*_*eys 6 c++ templates ambiguity c++11
有人能解释一下这里的含糊之处吗?
template <typename...> struct thing;
template <typename... Rest>
struct thing<int&, Rest&...> {
thing(int&, Rest&...) { }
};
template <typename First, typename... Rest>
struct thing<First&, Rest&...> {
thing(First&, Rest&...) { }
};
int main() {
int myint;
char mychar;
thing<int&, char&> t(myint, mychar);
}
Run Code Online (Sandbox Code Playgroud)
如果你专注于int
而不是int&
它有效
template <typename...> struct thing;
template <typename... Rest>
struct thing<int, Rest...> {
thing(int&, Rest&...) { }
};
template <typename First, typename... Rest>
struct thing<First, Rest...> {
thing(First&, Rest&...) { }
};
Run Code Online (Sandbox Code Playgroud)