Language-Lawyer – вопросы и ответы

169
голосов
1
ответ
Это тангенциальное продолжение моего предыдущего вопроса Адрес функции, соответствующей перегрузке bool vs const void *. Ответчик объяснил: Стандарт [С++ 11] не определяет стандартные преобразовани...
8 месяцев назад user4910881
72
голоса
1
ответ
Является ли арифметическое переполнение корректным для каждого C++ 17 для uint8_t , uint16_t , uint32_t , uint64_t ? Если да, то каково определенное поведение (выдержка из C++ стандарта высоко цени...
8 месяцев назад HCSF
72
голоса
1
ответ
от этого вопроса (до сих пор не решен) я сталкивался с этой новой проблемой, поэтому здесь я привел пример: //main.cpp int main() { return 0; } //file1.cpp #include "b.h" B b; //file2.cpp #include ...
8 месяцев назад bigxiao
109
голосов
3
ответа
Мы знаем, что условие в C, например a > b , приводит либо к 0, либо к 1. Если мы хотели бы использовать это значение 0 / 1 непосредственно в выражении, например. 1 - (a > b) , следует ли счит...
8 месяцев назад user1969104
109
голосов
2
ответа
С++ 14 intro.cpp States: a most derived object shall have a non-zero size and shall occupy one or more bytes of storage Почему им нужно было указать ненулевой размер и один или несколько байтов хра...
8 месяцев назад New Student
169
голосов
4
ответа
C разрешает NULL определять любую константу нулевого указателя, другими словами, любое целочисленное выражение константы, которое оценивается в 0, или такое выражение, отлитое от void * . Мой вопро...
8 месяцев назад R..
83
голоса
2
ответа
template <class T> class Base { static_assert(!std::is_default_constructible<T>::value, "T must not be default constructible"); }; struct X1 : Base<X1> {}; struct X2 : Base<X2&...
8 месяцев назад bolov
73
голоса
1
ответ
Следующий код не может скомпилироваться как в MSVC2015, так и в clang, когда метки комментариев удаляются, но компилируется как есть. int main() { static_assert( alignof( int * ) == alignof( int * ...
8 месяцев назад Hector
93
голоса
2
ответа
При запросе еще одного вопроса недавно я наткнулся на какое-то странное поведение GCC при инициализации std::array с расширением пакета параметров, за которым следует другой элемент. Я уже обсуждал...
8 месяцев назад 5gon12eder
101
голос
1
ответ
При возврате объекта из функции может произойти один из следующих случаев, начиная с С++ 11, при условии, что определены move- и конструкторы копирования (см. Также примеры в конце этого поста): он...
8 месяцев назад ead
137
голосов
2
ответа
Я натолкнулся на такой код: struct A { A() {} A(int) {} }; struct B : A { void init(int i); }; void B::init(int i) { A::A(i); // what is this? } int main() { B b; b.init(2); } Скомпилирован и запущ...
8 месяцев назад bames53
338
голосов
4
ответа
Я не так хорошо разбираюсь в стандарте C, поэтому, пожалуйста, несите меня. Я хотел бы знать, гарантировано ли стандартом, что memcpy(0,0,0) безопасно. Единственное ограничение, которое я смог найт...
8 месяцев назад Matthieu M.
59
голосов
3
ответа
У меня есть следующий шаблонный класс, в котором член является const ref типом. Копирование объекта отключено и требуется только перемещение cntor и перемещение оператора присваивания. Q1 : Как реа...
8 месяцев назад Const
303
голоса
3
ответа
Вот фрагмент С++, который я нашел в документации библиотеки cpp.react : auto in = D::MakeVar(0); auto op1 = in ->* [] (int in) { int result = in /* Costly operation #1 */; return result; }; Я ни...
8 месяцев назад Philipp Claßen
332
голоса
5
ответов
Скажем, класс был определен как class A { //..... }; и теперь я создаю два объекта как A a,b; В каком порядке создаются a и b ? Определяется ли это стандартом?
8 месяцев назад pasha
117
голосов
1
ответ
Недавно я ответил на вопрос , касающийся нарушения проекта С++ 14 standard: N4140 раздел 3.3.7 Значение абзаца класса 1 класса 2 , в котором говорится:
8 месяцев назад Shafik Yaghmour
82
голоса
2
ответа
Рассмотрим: struct Y { Y(float f) : f(f) {} float f; }; struct X { X(Y y) : i(y.f) {} int i; friend bool operator==(X x1, X x2) { return x1.i == x2.i; } }; int main() { return Y(1) == Y(2); // ERRO...
8 месяцев, 1 неделя назад Marc Mutz - mmutz
101
голос
2
ответа
Каково поведение, когда NULL передается в качестве параметров в strstr ? Учитывая: char * p = NULL; char * s = NULL; Случай 1: strstr(p, "Hello"); Случай 2: strstr("With my dog", p); Случай 3: strs...
8 месяцев, 1 неделя назад Thomas Matthews
159
голосов
1
ответ
На момент написания статьи cppreference дает достаточно простое определение семейства std::in_place_t : struct in_place_t { explicit in_place_t() = default; }; inline constexpr std::in_place_t in_p...
8 месяцев, 1 неделя назад Tristan Brindle
305
голосов
4
ответа
class C { using namespace std; // error }; namespace N { using namespace std; // ok } int main () { using namespace std; // ok } Изменить . Хотите узнать мотивацию.
8 месяцев, 1 неделя назад iammilind
109
голосов
1
ответ
Это похоже на структуры POD, содержащие константный элемент , но вроде наоборот. #include <iostream> struct A { int a; }; union U { volatile A a; long b; }; int main() { U u1; U u2; u1.a.a = ...
8 месяцев, 1 неделя назад qbt937
72
голоса
1
ответ
Этот код компилируется в gfortran, Intel Fortran и Solaris Studio real, dimension(:) :: A(2) print *, size(A) end Результат 2. Тем не менее, когда другой оператор массива пытается в утверждении изм...
8 месяцев, 1 неделя назад Vladimir F
170
голосов
1
ответ
В следующем фрагменте GCC 7 с режимом С++ 1z вызывает конструктор по умолчанию, но GCC/С++ 14 и Clang/С++ 14, С++ 1z вызывают конструктор списка инициализаторов. Является ли это поведение затронуты...
8 месяцев, 1 неделя назад yohjp
59
голосов
2
ответа
Согласно стандарту C++ 03, действительно ли имеет место ссылка на неполные типы? Я не знаю никакой реализации, которая реализует ссылки как любые другие, кроме ненулевых указателей, поэтому такой к...
8 месяцев, 1 неделя назад K-ballo
59
голосов
1
ответ
ISO/IEC 9899: 2011 §5.2.4.2.2 ¶10 (p48) гласит: Наличие или отсутствие субнормальных чисел характеризуется implementation- определенными значениями FLT_HAS_SUBNORM , DBL_HAS_SUBNORM и LDBL_HAS_SUBN...
8 месяцев, 1 неделя назад Vorac
82
голоса
1
ответ
Это в основном продолжение моего предыдущего вопроса . Это [класс]/7 в С++ 14: Класс стандартного макета - это класс, который: (7.1) - не содержит нестатических элементов данных класса нестандартно...
8 месяцев, 1 неделя назад Alexander
195
голосов
3
ответа
В стандарте C указаны две формы определения для main для хостинг: int main(void) { /* ... */ } и int main(int argc, char *argv[]) { /* ... */ } Он может быть определен способами, которые эквивалент...
8 месяцев, 1 неделя назад Keith Thompson
72
голоса
1
ответ
Составителям разрешено делать несколько предположений, которые приведут к поведению undefined (например, если добавление не переполняется). Могут ли они сделать такое предположение относительно с п...
8 месяцев, 1 неделя назад edA-qa mort-ora-y
72
голоса
2
ответа
Рассмотрим следующие две таблицы: user: ID | name ---+-------- 1 | Alice 2 | Bob 3 | Charlie event: order | user ------+------------ 1 | 1 (Alice) 2 | 2 (Bob) 3 | 3 (Charlie) 4 | 3 (Charlie) 5 | 2 ...
8 месяцев, 1 неделя назад lvella
159
голосов
5
ответов
Интересно, можно ли для длинных циклов использовать хвостовую рекурсию для constexpr в С++ 11?
8 месяцев, 1 неделя назад Johannes Schaub - litb
72
голоса
2
ответа
Я читаю книгу JavaScript: "Хорошие детали" для увеличения моего знания JavaScript. В Главе 3 Предметы Автор говорит: Объект - это контейнер свойств, где свойство имеет имя и значение. Имя свойства ...
8 месяцев, 1 неделя назад oyilmaztekin
123
голоса
2
ответа
#include <iostream> #define true false #define false true int main() { std::cout << false << true; } Почему он выводит "01"?
8 месяцев, 1 неделя назад hired777
125
голосов
1
ответ
Сегодня я играл с шаблонами, чтобы узнать, могу ли я заставить компилятор вывести тип внешнего класса из одного из его внутренних классов. Я не нашел свое решение (которое, как я подозреваю, невозм...
8 месяцев, 1 неделя назад tux3
101
голос
2
ответа
Что, если какое-либо из следующих действий "правильно" соответствует стандарту? Вы можете предположить, что m и n имеют тип int (целое число со знаком). Основной проблемой является целое переполнен...
8 месяцев, 1 неделя назад david.pfx
84
голоса
2
ответа
Я использовал класс std::tuple и нашел что-то, что я бы сказал, довольно неожиданное поведение. Рассмотрим код: #include <iostream> #include <tuple> int i = 20; std::tuple<int&, ...
8 месяцев, 1 неделя назад Mestkon
59
голосов
2
ответа
В комментариях к статье конструктора перемещения Andrzej я сообщил, что перемещенный из объекта может иметь любую функцию-член, вызываемую на нем, которая не имеет предварительного условия. Я приве...
8 месяцев, 1 неделя назад David Stone
109
голосов
2
ответа
Кажется, есть разница в том, когда шаблоны раскрываются для членов класса, которые имеют инициализаторы по умолчанию между MSVC и Clang, что иногда может привести к коду, который успешно компилируе...
8 месяцев, 1 неделя назад Greg
190
голосов
1
ответ
В стандарте С++ 11 ( ближайший черновик N3337 ) section 1.2 Нормативные ссылки говорят: Следующие ссылочные документы являются обязательными для применения этого документа. Для датированных ссылок ...
8 месяцев, 1 неделя назад Shafik Yaghmour
235
голосов
2
ответа
Для вычитания указателей i и j элементам одного и того же объекта массива примечание в [expr.add # 5] гласит: [Примечание. Если значение i-j не находится в диапазоне представляемых значений типа st...
8 месяцев, 1 неделя назад jotik
201
голос
4
ответа
Рассмотрим следующий код: public class A { public static void main(String[] args) { Runnable test1 = ((I)(new I() {}))::test; // compiles OK Runnable test2 = ((new I() {}))::test; // won't compile ...
8 месяцев, 1 неделя назад Andremoniy
Чтобы , пожалуйста,
Выберите тему жалобы:

Другая проблема