Может ли кто-нибудь объяснить двусмысленность здесь?
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);
}
std::enable_if_t<!std::is_same_v<First, int>>* = nullptr
? - person prestokeys   schedule 27.11.2017template <typename ... Ts> struct thing<Ts&...> : thing_for_ref<Ts...> {}
(а затем специализироваться наthing_for_ref
) в качестве обходного пути. - person Jarod42   schedule 27.11.2017