Сообщение от
kin4stat
Ну как минимум emplace_back возвращает lvalue reference, а у тебя auto&&, который rvalue reference
Неа, в этом случае оба объявления являются идентичными
https://en.cppreference.com/w/cpp/language/reference.
C++:
Код:
auto
&&
lvref
=
objs
.
emplace_back
(
)
;
auto
&
fref
=
objs
.
emplace_back
(
)
;
static_assert
(
std
::
is_same
(
)
)
;
Сообщение от
kin4stat
RenderClass(RenderClass&) = default;
RenderClass(RenderClass&&) = default;
Посоветовал бы при использовании конструктора копирования помечать соответствующий параметр модификатором const, так как в противном случае это немного не общепринятая практика, особенно если используется семантика перемещения, которая была создана с целью устранения проблем первого конструктора.
А вообще зачем это? Использования вектора априори накладывает ограничения на тип элементов CopyAssignable и CopyConstructible, а emplace_back - MoveInsertable and EmplaceConstructible. Компилятор и так сгенерирует нужные конструкторы.
Сообщение от
loganhackerdff
вообще не компилилось, даже по одной
Так как вы явно указали компилятору, что необходимо создать два конструктора, в частности копирования и перемещения, то также нужно и указать, что требуется создать конструктор по умолчанию.
C++:
Код:
RenderClass
(
)
=
default
;