Некоторые функции шаблона больше не компилируются в gcc 7

После обновления с gcc 6.1 до 7.1 часть моего кода больше не компилируется:

include\jw\vector2.h: In member function 'constexpr jw::vector2<T>& jw::vector2<T>::operator=(const jw::vector2<U>&)':
include\jw\vector2.h(32,119): error :  expected primary-expression before '>' token
        template <typename U> constexpr vector2& operator=(const vector2<U>& rhs) noexcept { return *this = rhs.cast<T>(); };
                                                                                                                      ^
include\jw\vector2.h(32,121): error :  expected primary-expression before ')' token
        template <typename U> constexpr vector2& operator=(const vector2<U>& rhs) noexcept { return *this = rhs.cast<T>(); };
                                                                                                                        ^

Я получаю около 20 таких ошибок в различных классах, используя функции шаблонов. В этом случае vector2 простой шаблонный класс, определенный как:

template <typename T> struct vector2
{ /* ... */ }

а также cast является функцией-членом vector2, определяется как:

template <typename U> constexpr vector2<U> cast() const noexcept 
{ 
    return vector2<U>{ std::is_integral<U>::value ? this->rounded() : *this }; 
}

Честно говоря, я не вижу здесь проблемы, и сообщение об ошибке не указывает ни на какие очевидные проблемы. Любые идеи, почему это вдруг не удается?

0 ответов

Другие вопросы по тегам