Что Clang делает по-другому, чем GCC? И как я могу это исправить?
Не уверен, кто прав, и не уверен, что это решит вашу проблему (без минимального, но полного примера вашей проблемы, я не могу это проверить), но у меня есть ошибка (только clang ++), которая исчезает, когда я изменяю class
с typename
Так что я предлагаю
template<typename U,
typename... Us,
// ........VVVVVVVV <--- "typename" here, not "class"
typename = typename ::std::enable_if<!::std::is_base_of<Tuple,typename ::std::decay<U>::type>::value>::type>
Tuple(U&& u, Us&&... rest) : m_element(::std::forward<U>(u)),
m_rest(::std::forward<Us>(rest)...)
{ }