Ночью все кошки серы, а using'и одинаковы
Одной из самых сложных частей C++ до сих пор считаются правила поиска имён, и ошибки связанные с name lookup проявляются обычно уже в рантайме. Код компилится и даже работает какое-то время, но при свете луны ведёт себя не так как ожидает программист. За простыми идентификаторами скрывается многоуровневая система об...
Одной из самых сложных частей C++ до сих пор считаются правила поиска имён, и ошибки связанные с name lookup проявляются обычно уже в рантайме. Код компилится и даже работает какое-то время, но при свете луны ведёт себя не так как ожидает программист. За простыми идентификаторами скрывается многоуровневая система областей видимости, категорий имён и специальных правил, и очень многое в нашем текущем стандарте растёт прямиком из восьмидесятых, частенько без изменений. Давайте посмотрим как компилятор видит имена в C++, какие области видимости существуют и почему они ведут себя по-разному.В C++ есть несколько типов областей видимости, вы наверное сходу назовёте глобальное пространство имён, область параметров шаблона, область видимости класса и область параметров функции, но также есть блочная область видимости и область видимости перечислений. Между этими областями есть исторически сложившаяся асимметрия, которая частенько удивляет: два объявления using, которые вводят одно и то же имя в одну и ту же область видимости внутри пространства имён компилятор съест без возражений, но если попытаться сделать то же самое других областях видимости, то получим ошибку на повторное объявление. В серии статей про "нескучное программирование" я разбираю скользкие случаи и как мы докатились до такого. Это продолжение темы, начатой в "Важны ли компилятору имена", поэтому чтобы картинка была цельной, лучше пробежать её по диагонали.
Связанные теги
Компании и люди
Линия сюжета
Продолжить следить за темой
Переходите к связанным материалам, страницам сущностей и активным линиям сюжета.
CLI через CAN по ISO-TP
В этом тексте я написал про то как реализовать CLI на CAN шине. В разработке электроники часто делают электронную плату без UART, но с CAN . Как же отлаживать софт и железо в та...
Поиск и устранение проблем в Zabbix, или как перестать «слепо» мониторить
Система Zabbix является универсальной системой мониторинга с открытым исходным кодом, предназначенной для наблюдения за состоянием IT-инфраструктуры: серверов, сетевых устройств...
Как я тестирую API: чеклист и подходы, и автоматизация
Открыл Postman, потыкал эндпоинты, всё ответило 200 — вряд-ли хорошее тестирование Разбираю что на самом деле нужно проверять в API, показываю примеры на Postman и Jest, и даю ч...
Ацетилхолин определяет роль дофамина
На протяжении десятилетий нейробиологи пытались объяснить, как один нейромедиатор, дофамин, может одновременно выполнять две совершенно разные задачи. С одной стороны, он подкре...
Собеседование от Альфа-банка на вайбкодера
Как-то увидел в линкедине объявление что ищут "Программиста с навыками работы ai-ассистентом"Частично по приколу, частично из расчета на то что возможно вайбкодеров действительн...
На «РусКрипто’2026» рассказали, как защитить пароли от взлома на ASIC и FPGA
С 24 по 27 марта в Подмосковье проходит ежегодная международная конференция «РусКрипто’2026», отражающая развитие криптографии и информационной безопасности. В этом году многие ...
Страницы сущностей
Рекламный слот
Article monetization slot
Reserved for contextual monetization inside article pages.
Похожие статьи
Еще материалы, которые пересекаются по тегам, источнику или категории.
CLI через CAN по ISO-TP
В этом тексте я написал про то как реализовать CLI на CAN шине. В разработке электроники часто делают электронную плату без UART, но с CAN . Как же отлаживать софт и железо в та...
Поиск и устранение проблем в Zabbix, или как перестать «слепо» мониторить
Система Zabbix является универсальной системой мониторинга с открытым исходным кодом, предназначенной для наблюдения за состоянием IT-инфраструктуры: серверов, сетевых устройств...
Как я тестирую API: чеклист и подходы, и автоматизация
Открыл Postman, потыкал эндпоинты, всё ответило 200 — вряд-ли хорошее тестирование Разбираю что на самом деле нужно проверять в API, показываю примеры на Postman и Jest, и даю ч...
Ацетилхолин определяет роль дофамина
На протяжении десятилетий нейробиологи пытались объяснить, как один нейромедиатор, дофамин, может одновременно выполнять две совершенно разные задачи. С одной стороны, он подкре...
Еще материалы от Habr
Свежие публикации и продолжение темы от той же редакции.
CLI через CAN по ISO-TP
В этом тексте я написал про то как реализовать CLI на CAN шине. В разработке электроники часто делают электронную плату без UART, но с CAN . Как же отлаживать софт и железо в та...
Поиск и устранение проблем в Zabbix, или как перестать «слепо» мониторить
Система Zabbix является универсальной системой мониторинга с открытым исходным кодом, предназначенной для наблюдения за состоянием IT-инфраструктуры: серверов, сетевых устройств...
Как оплатить подписку чат ГПТ из России в 2026 году: личный опыт и реальные цифры
На связи Нейрохаб. Сегодня конкретно про то, как оплатить подписку ChatGPT Plus из России в 2026 году — сколько это реально стоит через разные серв...
Как я тестирую API: чеклист и подходы, и автоматизация
Открыл Postman, потыкал эндпоинты, всё ответило 200 — вряд-ли хорошее тестирование Разбираю что на самом деле нужно проверять в API, показываю примеры на Postman и Jest, и даю ч...