Дивергенция компилятора для неполного типа, используемого в качестве аргумента декларации функции по умолчаниюC++

Программы на C++. Форум разработчиков
Ответить Пред. темаСлед. тема
Anonymous
 Дивергенция компилятора для неполного типа, используемого в качестве аргумента декларации функции по умолчанию

Сообщение Anonymous »

struct Bar;

template
struct Foo {
void baz(Bar bar = {});
};

struct Bar {};

template
void Foo::baz(Bar bar) {}

int main() {
Foo foo;
}
< /code>
Это компилируется в GCC, но в Clang он произвел следующую ошибку: < /p>
:5:22: error: variable has incomplete type 'Bar'
5 | void baz(Bar bar = {});
| ^
:1:12: note: forward declaration of 'Bar'
1 | struct Bar;
|
< /code>
Мое предположение состоит в том, что GCC, вероятно, более снисходительна, чем стандартные диктаты. Однако, если это так, то кажется немного раздражающим, что стандарт ограничивает это, когда GCC доказал, что его можно работать.

Подробнее здесь: https://stackoverflow.com/questions/796 ... nction-dec
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «C++»