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

Для вопросов о тонкостях формальных или авторитетных спецификаций языков программирования и сред.
7

С++ 11 представил стандартизованную модель памяти. Что это значит? И как это повлияет на программирование на C++?

C++ 11 представила стандартизованную модель памяти, но что именно это означает? И как это повлияет на программирование C++? Эта статья (Гэвин Кларк, цитирующая Херба Саттера) говорит, что, Модель памяти означает, что код C++ теперь имеет стандар...
11 июн. '11 в 23:30
6

В CSS Flexbox, почему нет свойств "justify-items" и "justify-self"?

Рассмотрим основную ось и поперечную ось гибкого контейнера:                                                                                                                       Источник: W3C Чтобы выровнять элементы flex вдоль основной оси, с...
13 сент. '15 в 15:30
17

int a [] = {1,2,}; Разрешена странная запятая. Любая конкретная причина?

Возможно, я не с этой планеты, но мне кажется, что следующая синтаксическая ошибка: int a[] = {1,2,}; //extra comma in the end Но это не так. Я был удивлен, когда этот код был скомпилирован в Visual Studio, но я научился не доверять компилятору MS...
12 авг. '11 в 16:36
7

Может ли код С++ быть действительным как в С++ 03, так и в С++ 11, но делать разные вещи?

Возможно ли, что код С++ соответствует как стандарту C++03, так и C++11 стандарт, но делать разные вещи в зависимости от того, какой стандарт он компилируется?
13 апр. '14 в 19:12
13

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

Один из моих детей принимает Java в старшей школе и получил это на одном из своих тестов: Какое из следующих значений является допустимым идентификатором в Java? а. 123java б. main с. java1234 д. {abce е. )whoot Он ответил b и сделал это неп...
10 сент. '18 в 19:57
11

Почему поведение f (i = -1, я = -1) undefined?

Я читал о порядке нарушений оценок, и они приводят пример, который меня озадачивает. 1) Если побочный эффект скалярного объекта не секвенирован относительно другого побочного эффекта на том же скалярном объекте, поведение undefined. // snip f(i =...
10 февр. '14 в 6:31
1

Положительная лямбда: '+ [] {}' - Какое волшебство?

В вопросе Переопределение lambdas не разрешено в С++ 11, почему?, была предоставлена ​​небольшая программа, которая не компилируется: int main() { auto test = []{}; test = []{}; } На вопрос был дан ответ, и все было хорошо. Затем пришел Йо...
19 сент. '13 в 7:51
8

Действительный, но бесполезный синтаксис в коммутаторе?

Через небольшую опечатку я случайно нашел эту конструкцию: int main(void) { char foo = 'c'; switch(foo) { printf("Cant Touch This\n"); // This line is Unreachable case 'a': printf("A\n"); break; case 'b': prin...
18 янв. '17 в 19:02
6

Имеет ли С++ 11, 14, 17 или 20 стандартную константу для pi?

Существует довольно глупая проблема с числом pi в C и C++. Насколько я знаю, M_PI определенный в math.h, не требуется никаким стандартом. Новые C++ стандарты внесли в стандартную библиотеку множество сложной математики - гиперболические функции, st...
11 апр. '18 в 14:49
3

Что сделало я = я ++ + 1; юридический в С++ 17?

Прежде чем вы начнете вопить поведение undefined, это явно указано в N4659 (С++ 17) i = i++ + 1; // the value of i is incremented Тем не менее в N3337 (С++ 11) i = i++ + 1; // the behavior is undefined Что изменилось? Из тог...
07 дек. '17 в 19:16
1

Скопировать/переместить назначение в std::vector:: erase() и std:: deque:: erase()

В процессе ответа на еще один вопрос я наткнулся на несколько разные формулировки для std::vector::erase() и std::deque::erase(). Вот что говорит С++ 14 о std::deque::erase ([deque.modifiers]/4-6, мой удар): Эффекты:... Сложность: количество выз...
02 февр. '15 в 12:40
2

Лямбда-захват и параметр с тем же именем - кто тенью другой? (clang vs gcc)

auto foo = "You're using g++!"; auto compiler_detector = [foo](auto foo) { std::puts(foo); }; compiler_detector("You're using clang++!"); clang++ 3.6.0 и более новая распечатка "Вы используете clang++!" и предупредить о том, что захват foo не ...
07 февр. '17 в 10:56
5

Определение оператора "==" для Double

По какой-то причине я прокрался в источник .NET Framework для класса Double и выяснил, что объявление == является: public static bool operator ==(Double left, Double right) { return left == right; } Та же логика применяется для каждого опера...
01 февр. '16 в 15:04
9

Безопасно ли push_back элемент из того же вектора?

vector<int> v; v.push_back(1); v.push_back(v[0]); Если второй push_back вызывает перераспределение, ссылка на первое целое число в векторе больше не будет действительна. Так что это не безопасно? vector<int> v; v.push_back(1); v.reserv...
13 сент. '13 в 14:27
6

Как этот кусок кода определяет размер массива без использования sizeof()?

Проходя через несколько вопросов на собеседовании с C, я обнаружил вопрос о том, "Как найти размер массива в C без использования оператора sizeof?", Со следующим решением. Это работает, но я не могу понять, почему. #include <stdio.h> int main...
15 мая '19 в 17:03