«Вложенный» вывод аргумента класса-шаблона с круглыми скобками: GCC vs. clang - PullRequest
0 голосов
/ 25 января 2019

Связано, но (ИМХО) отличается: Вычет аргументов вложенного шаблона для шаблонов классов не работает

Следующий код C ++ 17 отклонен из GCC 8, но clang компилирует его безлюбые вопросы.Сообщение об ошибке GCC включено в качестве комментария непосредственно перед проблемной строкой.

Какой компилятор здесь верен?

https://godbolt.org/z/WG6f7G

template<class T>
struct Foo {
    Foo(T) {}
};

template<class T>
struct Bar {
     Bar(T) {};
};

void works() {
    Bar bar{1};// {}
    Foo foo(bar);// ()
}

void works_too() {
    Foo foo{Bar{1}};// {{}}
}

void error_in_gcc() {
// error: 'auto' parameter not permitted in this context
    Foo foo(Bar{1});// ({})
}

void but_this_works() {
    Foo(Bar{1});// ({})
}

1 Ответ

0 голосов
/ 25 января 2019

В комментариях к этому вопросу говорится, что это ошибка GCC.Это было подано как отчет об ошибке GCC 89062 .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...