On-line: гостей 0. Всего: 0 [подробнее..]
Программисты всех стран, объединяйтесь!

АвторСообщение



ссылка на сообщение  Отправлено: 13.11.21 13:40. Заголовок: Дефект стандарта C++ в разделе "The typedef specifier"


В стандарте C++ 20 в параграфе №2 в разделе "9.2.4 The typedef specifier" имеется следующий пример объявления алиаса

 
using cell = pair<void*, cell*>; // error


и нет никакого объяснения, почему это некорректное объявление, что вводит читателей стандарта в недоумение.

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

 
#include <utility>

using cell = int;

int main()
{
using cell = std::pair<void *, cell *>;

return 0;
}

является корректной.

Согласно стандарту (6.4.2 Point of declaration, параграф №3 )

 цитата:
The point of declaration of an alias or alias template immediately follows the defining-type-id to which the alias refers



Это означает, что внутри defining-type-id имя cell ссылается на имя, введенное в глобальном пространстве имен соответствующим объявлением алиаса.

Таким образом, вышеуказанный пример объявления алиаса либо должен быть удален из стандарта, либо должно быть пояснение, почему такое объявление алиаса является некорректным. То есть нужно описание контекста.

Спасибо: 0 
ПрофильЦитата Ответить
Новых ответов нет


Ответ:
1 2 3 4 5 6 7 8 9
большой шрифт малый шрифт надстрочный подстрочный заголовок большой заголовок видео с youtube.com картинка из интернета картинка с компьютера ссылка файл с компьютера русская клавиатура транслитератор  цитата  кавычки моноширинный шрифт моноширинный шрифт горизонтальная линия отступ точка LI бегущая строка оффтопик свернутый текст

показывать это сообщение только модераторам
не делать ссылки активными
Имя, пароль:      зарегистрироваться    
Тему читают:
- участник сейчас на форуме
- участник вне форума
Все даты в формате GMT  3 час. Хитов сегодня: 19
Права: смайлы да, картинки да, шрифты да, голосования нет
аватары да, автозамена ссылок вкл, премодерация откл, правка нет