Вопросы по теме 'language-lawyer'

Точки последовательности и частичный порядок
Несколько дней назад здесь обсуждалось, действительно ли выражение i = ++i + 1 вызывает UB (неопределенное поведение) или нет. Наконец, был сделан вывод, что он вызывает UB, поскольку значение 'i' изменяется более одного раза между...
1885 просмотров
schedule 07.03.2024

Как законно ссылаться на неопределенный тип внутри структуры?
В рамках ответа на другой вопрос я наткнулся на такой фрагмент кода, который gcc компилирует без нареканий. typedef struct { struct xyz *z; } xyz; int main (void) { return 0; } Это средство, которое я всегда использовал для создания...
2464 просмотров
schedule 04.03.2023

Используется виртуальная функция-член, если она не чистая?
C++03 3.2.2 ... Используется объект или неперегруженная функция, если ее имя появляется в потенциально оцениваемом выражении. Виртуальная функция-член используется, если она не чистая ... А затем в 3.2.3 мы имеем: Каждая программа должна...
415 просмотров

Обоснование различий в спецификаторе доступа по умолчанию для базового класса
Я знаю, что между struct и class в C ++ мало различий. Я также понимаю причины некоторых различий. Как этот, Члены структуры по умолчанию общедоступны ; члены класса по умолчанию закрыты . Причина, по которой члены struct по умолчанию...
1685 просмотров

Странное правило С++ для указателей функций-членов?
Возможный дубликат: Ошибка с адресом в скобках функция-член В этом недавнем вопросе OP столкнулся со странным положением языка C++, которое делает незаконным взять адрес функции-члена, если имя этой функции-члена заключено в скобки....
1988 просмотров
schedule 06.07.2022

Является ли поведение sizeof(*ptr) неопределенным при указании на недопустимую память?
Все мы знаем, что разыменование нулевого указателя или указателя на нераспределенную память приводит к неопределенному поведению. Но каково правило при использовании в выражении, переданном sizeof ? Например: int *ptr = 0; int size =...
1695 просмотров
schedule 08.07.2023

Может ли SFINAE обнаруживать нарушения приватного доступа?
Интересно, если я проверю для какого-то члена класса, а член является частным, что ответит sfinae? Будет ли это ошибкой, или она скажет, что все в порядке, или она будет ошибкой в ​​​​пути sfinae?
1012 просмотров
schedule 31.08.2023

Можете ли вы придумать простой макрос, эффективно вызывающий ошибку компилятора при его использовании?
Я специально ищу странное определение макроса: мне нужен макрос, определенный таким образом, чтобы в случае эффективного использования макроса в скомпилированном коде компилятор обязательно выдавал ошибку. Предыстория: поскольку C11 представил...
523 просмотров
schedule 02.02.2023

С++ 03. Проверяйте rvalue-vs-lvalue во время компиляции, а не только во время выполнения
В C++03 Foreach Boost, используя этот интересный метод , может обнаруживать во время выполнения независимо от того, является ли выражение lvalue или rvalue. (Я обнаружил это с помощью этого вопроса StackOverflow: Rvalues ​​в C++03 ) Вот...
1931 просмотров
schedule 19.03.2022

Потокобезопасность C11 в отношении функций, возвращающих указатели на статические буферы.
Рассмотрим такие функции, как localtime в стандартной библиотеке C, которые возвращают указатель на (исторически) статический буфер. Делает ли C11 эти буферы локальными для потока? Согласно 7.1.4 в C11: Если в последующих подробных...
453 просмотров
schedule 21.08.2023

Располагает ли динамический массив без указания размера правильно сформированным кодом?
Следующий простой фрагмент программы выдает ошибки компиляции с gcc-4.3.4 . Программа: int main() { char *ptr = new char[10]; char *ptr1 = new char[]; return 0; } Ошибки компиляции: prog.cpp: в...
537 просмотров
schedule 29.03.2022

Сдвиг влево целочисленного значения со знаком неопределенного поведения в C ++ 03?
Согласно C ++ 03, 5.8 / 2, сдвиг влево определяется следующим образом: Значение E1 ‹ Что меня беспокоит, так это то, что беззнаковые типы упоминаются явно, а подписанные типы полностью игнорируются. Сравните это с 5.8 / 3, которое...
6358 просмотров
schedule 07.01.2024

Можно ли определить членство в пространстве имен в С++?
Для типов C++ заголовок <type_traits> дает нам много полезных возможностей отражения во время компиляции. Например. std::is_base_of<B, D>::value во время компиляции определяет, является ли B базовым классом D . Интересно, можно...
423 просмотров
schedule 02.08.2022

область видимости переменных в tcl
У меня есть вопрос о области видимости переменных в TCL, у меня есть следующий код: namespace eval ::hello { variable player variable name namespace export * } proc ::hello::setPlay {value} { set ::hello::player } proc...
1027 просмотров

Доступ к неактивному члену союза и неопределенному поведению?
У меня создалось впечатление, что доступ к члену union , отличному от последнего набора, - это UB, но я не могу найти надежную ссылку (кроме ответов, утверждающих, что это UB, но без какой-либо поддержки со стороны стандарта). Итак, это...
21159 просмотров

Безопасно ли использовать временный объект в качестве аргумента по умолчанию в C ++?
Например: int StrLen(const std::string &s = "default string") { const std::string &t = "another string"; // BTW, is this line safe? return s.size(); } Обновить Вывод SoapBox правильный, но причина не совсем правильная....
402 просмотров
schedule 29.08.2023

Действительно ли std::stoi безопасно использовать?
У меня был прекрасный разговор с кем-то о падениях std::stoi . Грубо говоря, он использует std::strtol внутри и выдает исключение, если это сообщает об ошибке. Однако, по их мнению, std::strtol не должен сообщать об ошибке при вводе "abcxyz" ,...
63372 просмотров
schedule 21.10.2022

В чем разница между классом с сопутствующим объектом и классом и объектом с тем же именем?
«Компаньон-объект» класса Scala можно рассматривать как одноэлементный объект с тем же полным именем, что и у класса (т. е. с тем же именем в том же пакете). Они используются для хранения служебных функций, общих для всех экземпляров класса, в...
3669 просмотров

Словарь для юристов языка C++
В C++ есть термины, которые не упоминаются и не объясняются в большинстве книг по C++. Например: единственный итератор ( ссылка ) полное имя ( ссылка ) зависимое имя выведенный контекст тень x/gl/pr-value ( ссылка ) неполный тип (...
567 просмотров
schedule 23.08.2023

Обнаружение пространства имен в С++
Можно ли определить, находитесь ли вы в данной точке кода в пространстве имен? В частности, я хочу включить предупреждение, если файл включается в глобальное пространство имен.
1730 просмотров
schedule 26.04.2022