Вопросы по теме 'language-lawyer'
Является ли стандартная библиотека С++ частью языка С++?
Является ли стандартная библиотека C++ частью языка C++? ( обратите внимание на "язык", а не на "стандарт"; конечно, оба являются частью стандарта ).
Если да, то почему? Если нет, то почему?
Ответ на этот вопрос может различаться в C++98,...
759 просмотров
schedule
12.10.2022
Когда нам нужен конструктор по умолчанию?
Мой вопрос прост. Когда нам нужен конструктор по умолчанию? Пожалуйста, обратитесь к коду ниже:
class Shape
{
int k;
public:
Shape(int n) : k(n) {}
~Shape() {}
};
class Rect : public Shape
{
int l;
public:
Rect(int n):...
36755 просмотров
schedule
20.02.2024
Какое стандартное предложение предписывает это преобразование lvalue-to-rvalue?
Данный:
int main() {
int x = 0;
int y = x; // <---
}
Может ли кто-нибудь сказать мне, какой пункт стандарта (предпочтительно 2003 г.) предписывает преобразование выражения x из lvalue в rvalue при инициализации объекта y ?...
651 просмотров
schedule
25.04.2024
Порядок использования пространства имен std; и включает?
Недавно я видел, как этот код используется в исходном файле проекта C++:
using namespace std;
#include <iostream>
Игнорируя все вопросы о том, хорошо ли вообще иметь using namespace std , является ли приведенный выше код вообще...
7582 просмотров
schedule
16.04.2024
Неоднозначное введенное имя класса не является ошибкой
То, что я прочитал в стандарте C++ о внедренных именах классов, противоречит (на мой взгляд) поведению примера программы, который я вскоре представлю. Вот что я прочитал:
#P2# #P3#
#P4# #P5#
Из них я понимаю, что нижеследующее...
2404 просмотров
schedule
24.10.2023
Временное время жизни в черновике N3290 C++
Пункт из черновика N3290 C++, § 12.2, 5-й пункт, строка 10.
Второй контекст — это когда ссылка привязана к временному объекту. Временный объект, к которому привязана ссылка, или временный объект, являющийся полным объектом подобъекта, к...
265 просмотров
schedule
20.11.2022
функция try catch синтаксис и основной
Малоизвестной, но почти никогда не используемой функции C ++ дается объявление:
void foo();
Одно из возможных юридических определений могло бы быть таким:
void foo() try {
throw 42;
}
catch(...) {
}
Здесь вся обернутая реализация...
3811 просмотров
schedule
13.12.2023
Должен ли glob с GLOB_MARK добавлять / к результатам символической ссылки на каталог?
Функция glob имеет флаг GLOB_MARK , указанный для добавления косой черты к результатам, которые являются каталогами:
GLOB_MARK
К каждому имени пути, которое является каталогом, соответствующим шаблону, должно быть добавлено...
415 просмотров
schedule
02.11.2023
Где стандарт С++ описывает приведение указателей к примитивам?
В отличном сообщении в блоге Что должен знать каждый программист О неопределенном поведении в разделе «Нарушение правил типов» говорится:
Приведение типа int* к типу с плавающей запятой* и разыменование его (доступ к "int", как если бы он...
441 просмотров
schedule
19.12.2023
Является ли сложность vector::clear неуказанной?
Согласно обсуждению из Is `std::vector‹primitive›::clear ()` операция с постоянным временем? было отмечено, что стандарт C++, по-видимому, не определяет время выполнения vector::clear .
Он указывает время работы list::clear (линейного;...
810 просмотров
schedule
25.04.2024
Что делает enum - ›int лучшим преобразованием, чем enum -› unsigned?
В следующем коде вместо f(unsigned) выбрана перегрузка f(int) . Протестировано с помощью clang 3.0 и gcc 4.8.
enum E
{
};
E f(int);
int f(unsigned);
E e = f(E(0));
Мое чтение стандарта привело меня к мысли, что enum -> int и enum...
282 просмотров
schedule
29.12.2023
Может ли код, который никогда не будет выполнен, вызвать неопределенное поведение?
Код, который вызывает неопределенное поведение (в этом примере деление на ноль), никогда не будет выполнен, программа все еще ведет себя неопределенно?
int main(void)
{
int i;
if(0)
{
i = 1/0;
}
return 0;
}
Я...
4602 просмотров
schedule
13.11.2022
Как С++ освобождает память, когда конструктор выдает исключение и используется пользовательский новый
Я вижу следующие конструкции:
new X освободит память, если X выкинет конструктор.
operator new() может быть перегружен.
Каноническое определение новой перегрузки оператора — void *operator new(size_t c, heap h) и...
2349 просмотров
schedule
19.12.2023
Является ли (int *) 0 нулевым указателем?
Это можно рассматривать как расширение этого вопроса (меня интересует только C, но добавление C ++ для завершения расширение)
Стандарт C11 в 6.3.2.3.3 говорит:
Целочисленное постоянное выражение со значением 0 или такое выражение,...
10232 просмотров
schedule
28.04.2024
Допускается ли компилятору свобода действий в том, что он считает неопределенным поведением в константном выражении?
Мы знаем, что операции, которые могут вызвать неопределенное поведение, не являются основными. константные выражения ( раздел 5.19, параграф 2 из проект стандарта C++ )
В тестах, которые я провел, и clang , и gcc рассматривают неопределенное...
695 просмотров
schedule
20.11.2023
Как интерпретировать этот параграф стандарта C++, относящийся к замене макросов
В стандарте С++ 03 есть параграф, связанный с заменой макросов препроцессора:
16.3.4 Повторное сканирование и дальнейшая замена
Если имя заменяемого макроса найдено во время этого сканирования списка замены (не включая остальные токены...
231 просмотров
schedule
12.04.2024
Утечка памяти вызывает неопределенное поведение?
Это обсуждение возникло в комментариях к другому сообщению .
Образец кода:
#include <string>
void func()
{
std::string* foo;
foo = new std::string[125];
throw 1;
delete [] foo;
}
int main()
{
try { func(); }...
1196 просмотров
schedule
06.11.2023
Взаимозависимая инициализация с запятыми?
Правильно ли определено следующее:
int x = 42, y = x;
то есть строго эквивалентно:
int x = 42;
int y = x;
РЕДАКТИРОВАТЬ: вопрос не в стиле (я знаю, что это неправильно...), вопрос "теоретический"
831 просмотров
schedule
21.01.2024
В чем разница между оператором запятой и разделителем запятой?
В C++ маркер запятой (т. е. , ) интерпретируется либо как оператор-запятая , либо как разделитель-запятая .
Однако при поиске в сети я понял, что не совсем понятно, в каких случаях токен , интерпретируется как оператор двоичной запятой, а...
858 просмотров
schedule
01.12.2022
Что означает контекст ссылки?
Цитата из начала рабочего проекта раздела 3.4.3.2/3 N3797:
Если задано X::m (где X — пространство имен, объявленное пользователем) или задано ::m (где X — глобальное пространство имен), если S(X, m) — пустое множество, программа некорректна. В...
163 просмотров
schedule
05.11.2023