Нет ли тут какой-нибудь подлянки из-за того, что мы тасуем байты внутри живого объекта?
Если у объекта вызвать деструктор, но при этом placement new не вызывался, то это же UB? Типа: Type t; t.~Type();
На CentOS установлен devtoolset-11, компилятор g++ (GCC) 11.2.1, но при этом std::string не SSO. Как так? Не включаются ли при использовании компилятора какие-то скрытые макро...
Есть несколько потоков. Один каждые 0,5 сек пишет в общую атомарную переменную, другие читают, причем намного чаще, чем писатель пишет. Как правильно организовать чтение, чтоб...
Поиск UB в большом проекте привел к уменьшению этого проекта до одной единицы трансляции. Никаких библиотек, кроме буста, в бинарник не включается. UB стабильно проявляется. П...
Программа собирается с -О1 и работает прекрасно. Однако стоит добавить флаг -fdevirtualize и происходит SF. Подскажите, проблему точно стоит искать в виртуальных методах/их вы...
Есть мнение некоторых людей, что если в переменную типа time_t один поток пишет (через каждые 0,5 сек. сохраняет туда текущее время), а другие потолки оттуда читают, то такую ...
Есть ли возможность сделать так, чтобы поле-вектор в классе один раз инициализировалось в конструкторе и более в него нельзя было бы добавить элементы? При этом с самим элемен...
char buf[sizeof(int)] = {1, 2, 0}; int* ptr = new (buf) int; int i = *ptr; Тут есть UB?
Если написать вот так в коде int64_t(-1), то приведение int-а выполнится в рантайме или в компайл тайме?
Кто-то читал эту книгу? Рекомендуете?
std::optional<std::string> foo() { std::string res = "hello"; return std::move(res); } Вреден ли тут move?
Давно ищу причину UB в большом проекте. Минимальный пример сделать не удалось, но сделал не минимальный, в котором воспроизводится "плохое поведение" программы. Там, в частнос...
Объясните, пожалуйста, почему тут не работает SFINAE в случае инстанцирования Type типом, отличным от int?
Есть такой хедер: template <typename T> class Type { /* тут только объявления методов */ }; // Сюда вынесены все реализации методов шаблона extern template class Type<in...
Объясните, почему тут нет ошибки компиляции main.cc? Ведь это отдельная единица трансляции, в которой компилятор не видит реализацию методов шаблона.
В каком случае надо использовать такое объявление деструктора: virtual ~type() = default; ?
А не придумали ли ещё в плюсах возможность, чтобы имя можно было задать через параметр шаблона? Например, хотелось бы примерно так: Type<int, field> t; t.field = 42;
То есть, в классе нельзя вызвать его же метод в списке инициализации, верно?
Объясните, почему тут ошибка?