пытается перейти от tl::expected к std::expected, но сталкивается с неожиданной проблемой.
std::expected в GCC и Clang не поддается тривиальному копированию для тривиально копируемого значения и типы ошибок, однако это на MSVC. tl::expected легко копируется всеми.
Каким должно быть правильное поведение? Поисковые запросы оказались пустыми.
// Passes on GCC, Clang and MSVC.
static_assert(std::is_trivially_copyable_v);
// Passes on MSVC. Fails on GCC and Clang.
static_assert(std::is_trivially_copyable_v);
Compiler Explorer
Протестировано в Compiler Explorer.
пытается перейти от tl::expected к std::expected, но сталкивается с неожиданной проблемой. std::expected в GCC и Clang не поддается тривиальному копированию для тривиально копируемого значения и типы ошибок, однако это на MSVC. tl::expected легко копируется всеми. Каким должно быть правильное поведение? Поисковые запросы оказались пустыми. [code]// Passes on GCC, Clang and MSVC. static_assert(std::is_trivially_copyable_v); // Passes on MSVC. Fails on GCC and Clang. static_assert(std::is_trivially_copyable_v); [/code] Compiler Explorer Протестировано в Compiler Explorer.
Просматривая множество дискуссий о низкоуровневых манипуляциях с объектами в C++ (создание из массива символов, std::memcpy,...), мне было интересно, как это может работать для классов с битами заполнения:
#include
#include
#include
c ++ 26 введет std :: is_trivially_relocatable_v , а автор предложения гласит: тривиально копируется тривиально перемещаемое. Код:
struct A {
int n{};
int* pn{};
};
c ++ 26 введет std :: is_trivially_relocatable_v , а автор предложения гласит: тривиально копируется тривиально перемещаемое. Код:
struct A {
int n{};
int* pn{};
};
c ++ 26 введет std :: is_trivially_relocatable_v , а автор предложения гласит: тривиально копируется тривиально перемещаемое. Код:
struct A {
int n{};
int* pn{};
};