Правильно ли я понимаю, что для класса с умным указателем внутри копирующие конструктор и равно придется писать самому, а мув версии можно = default оставить?
Как я могу проинициализировать две rvalue ссылки одним и те же значением?
*(new bool) это lvalue выражение?
#include <iostream> #include <string> void foo(std::string_view some) { } int main() { std::string s = "some"; foo(s); } можете объяснить, как конкретно здесь string пре...
ArgParser::Argument::Argument(ArgParser& parent, const ArgParser::ArgumentType type, const std::string& help_messag...
У меня есть вектор каких-то сложных объектов Есть unordered_map, в которой я не хочу хранить копии этих объектов и храню references на них из вектора Это работает нормально, п...
Правильно ли я понимаю, что в foo(“abc”) “abc” это rvalue выражение и я могу создать move перегрузку foo, тогда “abc” будет отдано в нее?
Я понимаю, move меняет lvalue на rvalue, почему мне это не поможет?
void foo(sometype a); int main() { sometype a(…); … foo(std::move(a)); } если я не напишу в сигнатуре foo rvalue ссылку, то а все равно скопируется?
Я ведь не обязан в move operator= превращать объект в пустой? Т. е. я могу просто сделать свап всех его данных с тем, кому делаю = и оставить так, деструктор дальше разберется...
может кто-нибудь посоветовать какой-нибудь tui фреймворк? что-нибудь максимально просто внутри устроенное, но предоставляющее достаточно функций
А как юник понимает, вызывать delete или delete[], если я создам его как std::unique_ptr<Foo> some(new Foo)?
#include <iostream> #include <string> void foo(const std::string& some) { std::cout << " foo(const std::string& some)" << std::endl; } void foo(bool some) { std::cout <<...
а зачем мусор копировать?
из-за возвращаемого типа *?
Если у меня есть std::vector<…>&& a, то a[i] это rvalue?
А нельзя ее дату просто пополам попилить и новым отдать?
Зачем его мувать, он уже rvalue?
Можно пример без auto?