лягушка ICE на любопытно повторяющихся шаблонов (CRTP) - PullRequest
0 голосов
/ 21 июня 2019

Следующая короткая программа:

#include <vector>

template<typename T>
struct Ref {
    T& operator*() { return T::get(); }
};

template<typename T>
struct Repro {
    static T& get() { return table.back(); }
    inline static std::vector<T> table;
};

struct Type : Repro<Type> {};

struct Unit {
    Ref<Type> ut;
    Type& base() { return *ut; }    
};

int main() {}

Не компилируется в clang (с -std = c ++ 17) в том, что кажется ICE.У MSVC нет проблем с этим. Выделяется ли что-нибудь как известная ошибка лязга, и есть ли обходной путь?

Будучи ЛЕД, это, вероятно, не моя вина, но это не помогает мне, работа - это

смотреть онлайн здесь

...