Зависимые имена в руководствах вычета C ++ и типах возврата в следование - ошибка в GCC или плохо сформированные?C++

Программы на C++. Форум разработчиков
Ответить Пред. темаСлед. тема
Anonymous
 Зависимые имена в руководствах вычета C ++ и типах возврата в следование - ошибка в GCC или плохо сформированные?

Сообщение Anonymous »

Вопрос для стандартных юристов C ++. Я чувствую, что следующий код должен быть принят на 100% и способен создавать экземпляр, когда определяется параметр шаблона, для которого определяется контейнер -размер (t const &) , но GCC (все версии, поддерживающие C ++ 23, включая туловище) отклоняет конструкции с использованием сцепного возврата с зависимыми именами:

#include

// wraps lvalues by ref and xvalues by move
template
struct wrap {
T obj;

friend consteval auto size(wrap const &) {
return size_;
}
};

// error in gcc, ok in clang:
template
wrap(T && a) -> wrap;

// error in gcc, ok in clang:
template
auto make_wrap(T && a) -> wrap {
return {std::forward(a)};
}

// ok in gcc and clang but requires T to be
// default-constructible:
template
auto make_wrap1(T && a) -> wrap {
return {std::forward(a)};
}

// ok in gcc and clang:
template
auto make_wrap2(T && a) {
return wrap{std::forward(a)};
}

Попробуйте здесь: https://godbolt.org/z/bo1bjzyqz. Ошибка: < /p>

Не существует аргументов для «размера», которые зависят от параметра шаблона,
, поэтому объявление «размер» должно быть доступно [-fpermissive] < /p>
< /blockquote>
. size (t {}) вместо size (a) . Но явно зависит от параметра шаблона t , так что оба должны работать, а Кланг все принимает.
это тогда ошибка в GCC?>

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

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

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

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

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

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

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