Вопросы по теме '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 просмотров
schedule
12.02.2022
Обоснование различий в спецификаторе доступа по умолчанию для базового класса
Я знаю, что между struct и class в C ++ мало различий. Я также понимаю причины некоторых различий. Как этот,
Члены структуры по умолчанию общедоступны ; члены класса по умолчанию закрыты . Причина, по которой члены struct по умолчанию...
1685 просмотров
schedule
01.05.2023
Странное правило С++ для указателей функций-членов?
Возможный дубликат: Ошибка с адресом в скобках функция-член
В этом недавнем вопросе 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 просмотров
schedule
28.08.2022
Доступ к неактивному члену союза и неопределенному поведению?
У меня создалось впечатление, что доступ к члену union , отличному от последнего набора, - это UB, но я не могу найти надежную ссылку (кроме ответов, утверждающих, что это UB, но без какой-либо поддержки со стороны стандарта).
Итак, это...
21159 просмотров
schedule
06.01.2023
Безопасно ли использовать временный объект в качестве аргумента по умолчанию в 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 просмотров
schedule
28.11.2023
Словарь для юристов языка C++
В C++ есть термины, которые не упоминаются и не объясняются в большинстве книг по C++. Например:
единственный итератор ( ссылка )
полное имя ( ссылка )
зависимое имя
выведенный контекст
тень
x/gl/pr-value ( ссылка )
неполный тип (...
567 просмотров
schedule
23.08.2023
Обнаружение пространства имен в С++
Можно ли определить, находитесь ли вы в данной точке кода в пространстве имен? В частности, я хочу включить предупреждение, если файл включается в глобальное пространство имен.
1730 просмотров
schedule
26.04.2022