0
ответов

Не определено ли, что представляет собой неудачная инициализация статических переменных длительности хранилища блока или потока?

Задавшись этим вопросом и не найдя удовлетворительного ответа в стандарте, я начал задумываться. В стандарте говорится следующее относительно инициализации упомянутых переменных: §6.7 [...
вопрос задан: 23 May 2017 12:17
0
ответов

Действительно ли перегрузка оператора запятой * влияет * на порядок вычисления его операндов?

Оператор запятой гарантирует порядок вычисления слева направо. [n3290: 5.18 / 1]: оператор запятой группирует слева направо. выражение: выражение-присваивание выражение, выражение-присваивание ...
вопрос задан: 23 May 2017 12:16
0
ответов

Странное правило C ++ для указателей на функции-члены? [дубликат]

Возможный дубликат: ошибка с адресом заключенной в скобки функции-члена В этом недавнем вопросе OP столкнулся со странным положением языка C ++, которое делает незаконным получение адреса ...
вопрос задан: 23 May 2017 12:16
0
ответов

Обязательная ссылка на объект до начала строительства

Хорошо ли определено поведение следующего кода? struct X {int i; }; // тривиальная структура Y: X {Y () {}}; // нетривиальный extern X xobj; int & r1 = xobj.i; // # 1 X xobj; extern Y yobj; Y & ...
вопрос задан: 23 May 2017 12:16
0
ответов

Инициализируются ли локальные переменные в составном операторе switch, когда метка `default:` помещается вне фигурных скобок?

Обычно при использовании оператор switch, вы не можете определять и инициализировать переменные, локальные для составного оператора, например switch (a) {int b = 5; / * Инициализация пропускается, независимо от a * / ...
вопрос задан: 23 May 2017 12:12
0
ответов

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

Comeau, g ++ (ideone) и EDG принимают следующий код без диагностики. Visual C ++ успешно компилируется, хотя и с предупреждением C4624. класс indestructible_base {~ нерушимая_база (); }; ...
вопрос задан: 23 May 2017 12:11
0
ответов

Сравнивает ли два указателя void на разные объекты, определенные в C ++?

На основе этого ответа о динамическом преобразовании в void *: ... bool eqdc (B * b1, B * b2) {return dynamic_cast (b1) == dynamic_cast (b2); } {{1} } ... int main () {DD * dd = new DD (); ...
вопрос задан: 23 May 2017 12:08
0
ответов

Нужно ли C # ключевое слово private?

(навеяно этим комментарием) Есть ли когда-нибудь ситуация, в которой вам нужно использовать ключевое слово private? (Другими словами, ситуация, в которой пропуск ключевого слова приведет к другому поведению)
вопрос задан: 23 May 2017 12:04
0
ответов

Почему С++ не поддерживает несколько инициализаторов в цикле for? [дубликат]

Возможный дубликат :В C++ почему я не могу написать цикл for (), подобный этому :for (int i = 1, double i2 = 0; Почему так сложно написать цикл for -на C++ с двумя переменными цикла? #включить &...
вопрос задан: 23 May 2017 12:02
0
ответов

Является ли сдвиг влево целого числа со знаком неопределенным поведением в C++03?

В соответствии с C++03, 5.8/2, сдвиг влево определяется следующим образом: значением E1 << E2 является E1 (интерпретируемое как битовый шаблон) сдвинутые влево битовые позиции E2; освободившиеся биты заполняются нулями. Если E1 ...
вопрос задан: 23 May 2017 11:54
0
ответов

Является ли неопределенное поведение формированием диапазона указателя из адреса стека?

Некоторые программисты C или C ++ с удивлением обнаруживают, что даже сохранение недопустимого указателя является неопределенным поведением. Однако для массивов кучи или стека можно хранить адрес одного за концом ...
вопрос задан: 23 May 2017 11:54
0
ответов

Законность использования оператора delete для указателя, полученного в результате размещения new

Я совершенно уверен, что этот код должен быть незаконным, так как он явно не работает, но, похоже, разрешено C ++ 0x FCD. класс X {/ * ... * /}; void * raw = malloc (sizeof (X)); X * p = новый (необработанный) X (); ...
вопрос задан: 23 May 2017 11:51
0
ответов

В чем разница между классом с сопутствующим объектом и классом и объектом с тем же именем?

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

Объекты в куче и ссылки

Отвечая на этот вопрос, я немного запутался. Мы все знаем, что это прекрасно работает благодаря семантике копирования C++ :int *some _obj = new int (42 ); int a _copy = *some _obj; удалить некоторые _obj;printf ("...
вопрос задан: 23 May 2017 11:48
0
ответов

function try catch syntax and main

Малоизвестная, но почти никогда не используемая функция C ++ получает объявление: void foo (); Одно возможное юридическое определение может быть таким: void foo () try {throw 42; } ловить(...) { } Здесь вся функция ...
вопрос задан: 23 May 2017 11:48
0
ответов

Инициализация объектов, ссылающихся друг на друга

Рассмотрим следующую пару типов, ссылающихся друг на друга: struct A; struct B {A & a; }; struct A {B & b; }; Это может быть инициализировано с помощью агрегированной инициализации в GCC, Clang, Intel, MSVC, ...
вопрос задан: 23 May 2017 11:45
0
ответов

Использование ключевого слова typename с typedef и new

Рассмотрим этот код, template struct Sample {typename T :: X * x; // объявляем указатель на X }; В приведенном выше коде ключевое слово typename требуется компилятору, чтобы он мог ...
вопрос задан: 23 May 2017 11:45
0
ответов

Перечисления C ++ начинаются с 0?

Если у меня есть перечисление, которое не присваивает номера перечислениям, будет ли его порядковый номер 0? Например: перечислимое перечисление {НОЛЬ, ОДИН, ДВА, ...
вопрос задан: 23 May 2017 10:31
0
ответов

Допустимо ли обращаться к двумерному массиву, как если бы он был одномерным? [дубликат]

Возможный дубликат: могу ли я рассматривать 2D-массив как непрерывный 1D-массив? Рассмотрим следующий код: int array2d[10][10]; int *массив1d = массив2d[0]; Я никогда не слышал о реализации, в которой...
вопрос задан: 23 May 2017 10:31
0
ответов

C++03. Тест на rvalue-vs-lvalue во время компиляции, а не только во время выполнения

В C++03, Boost's Foreach, используя эту интересную технику, может определить во время выполнения, является ли выражение lvalue или rvalue. (Я нашел это через этот вопрос на StackOverflow: Rvalues in C++03 ) ...
вопрос задан: 23 May 2017 10:28
0
ответов

Is `long` guaranteed to be at least 32 bits?

By my reading of the C++ Standard, I have always understood that the sizes of the integral fundamental types in C++ were as follows: sizeof(char) <= sizeof(short int) <= sizeof(int) <= ...
вопрос задан: 23 May 2017 02:09
0
ответов

Определение функции шаблона члена вне строки с использованием другой функции шаблона члена в подписи

Я столкнулся с этой проблемой в каком-то реальном коде C ++ 11, но я свел ее к следующему: template struct Dummy {}; template struct Foo {template static ...
вопрос задан: 15 May 2017 19:52
0
ответов

Возможна ли пустая ссылка?

Является ли этот фрагмент кода допустимым (и определенным поведением)? int & nullReference = * (int *) 0; И g ++, и clang ++ компилируют его без предупреждения, даже при использовании -Wall, -Wextra, -std = c ++ 98, -pedantic, -...
вопрос задан: 28 February 2017 21:41
0
ответов

В CSS Flexbox почему нет & ldquo; justify-items & rdquo; и & ldquo; justify-self & rdquo; свойства?

Рассмотрим основную ось и поперечную ось гибкого контейнера: & ...
вопрос задан: 24 September 2016 22:51
0
ответов

Доступ к неактивному члену союза и неопределенное поведение?

У меня сложилось впечатление, что доступ к члену союза, отличному от последнего набора, является UB, но я не могу найти надежную ссылку (, кроме ответов, утверждающих, что это UB, но без какой-либо поддержки...
вопрос задан: 20 September 2016 16:11
0
ответов

Как правильно использовать функции wctype.h?

Различные... функции (напр. isalpha, isdigit )в ctype.h не совсем предсказуемы. Они принимают аргументы int, но ожидают символьные значения в диапазоне unsigned char, поэтому на платформе, где char...
вопрос задан: 20 September 2016 00:56
0
ответов

Почему внутри класса `auto b () -> decltype (a ()) {}` работает, а `decltype (a ()) b () {}` - нет?

Рассмотрим следующий код: (Ideone) struct S {int a () {return 0;} decltype (a ()) b () {return 1;}}; Это дает мне следующую ошибку: ошибка: невозможно вызвать функцию-член 'int S :: a ()' без ...
вопрос задан: 4 May 2016 22:08
0
ответов

CV-квалифицированные базовые классы в C ++

При рефакторинге кода на C ++ 11 я наткнулся на странную вещь. А именно, кажется, невозможно определить CV-квалифицированный (const, volatile или const volatile) базовый класс, например: struct A {int a = ...
вопрос задан: 27 April 2016 13:12
0
ответов

Это действительно нарушает правила строгого наложения имен?

Когда я компилирую этот пример кода с использованием g ++, я получаю это предупреждение: предупреждение: разыменование указателя типа-наказания нарушит правила строгого алиасинга [-Wstrict-aliasing] Код: #include < iostream > ...
вопрос задан: 17 March 2016 00:19
0
ответов

Вызывает ли printf («% x», 1) неопределенное поведение?

Согласно стандарту C (6.5.2.2 параграф 6) Если выражение, обозначающее вызываемую функцию, имеет тип, который не включает прототип, целочисленные повышения выполняются для каждого ...
вопрос задан: 15 March 2016 04:06