Я экспериментирую с семантикой перемещения в C ++, и у меня есть простой класс объект , который должен быть только подвижным - копирование отключено.
Вот класс:
Я экспериментирую с семантикой перемещения в C ++, и у меня есть простой класс объект , который должен быть только подвижным - копирование отключено. Вот класс: [code]class Entity { public: //... Entity() = delete; Entity(const Entity& entity) = delete; explicit Entity(Mesh&& mesh) : mesh(std::move(mesh)) { printf("Entity Created"); } Entity(Entity&& entity) noexcept: mesh(std::move(entity.mesh)) { printf("Inside the Entity move Constructor"); }
//... private: Mesh mesh; }; < /code> А вот как я пытаюсь использовать его :: < /p> //... Entity e1(std::move(mesh_1)); Entity e2(std::move(mesh_2));
std::vector entities = {std::move(e1), std::move(e2)}; //... < /code> Эта строка вызывает следующую ошибку: < /p> error: static assertion failed: result type must be constructible from input type [/code] Я действительно хочу понять, почему это происходит точно, поэтому любая идея была бы значительно утверждена
Я экспериментирую с семантикой перемещения в C ++, и у меня есть простой класс объект , который должен быть только подвижным - копирование отключено.
Вот класс:
class Entity {
public:
//...
Entity() = delete;
Entity(const Entity& entity) =...
GCC принимает этот код, Clang и MSVC отклоняют его из-за неудачного статического утверждения в утверждении.
Что говорит стандарт?
https:// godbolt.org/z/PKMKzYGsc
template
constexpr int assert() {
static_assert(sizeof(T) == 1);
return 1;
}...
GCC принимает этот код, Clang и MSVC отклоняют его из-за неудачного статического утверждения в утверждении.
Что говорит стандарт?
https:// godbolt.org/z/PKMKzYGsc
template
constexpr int assert() {
static_assert(sizeof(T) == 1);
return 1;
}...
У меня есть некоторые интриализованные свойства /поля, которые являются «постоянными», и я хочу знать, какая из следующих строк самая лучшая в использовании:
public static Color MyColor { get { return Color.Red; } }
public static readonly...