Const Kills The Move
#include <iostream>
#include <string>
#include <utility>
#include <vector>
struct Loud {
std::string s;
Loud(std::string v) : s(std::move(v)) {}
Loud(const Loud& o) : s(o.s) { std::cout << "copy\n"; }
Loud(Loud&& o) noexcept : s(std::move(o.s)) { std::cout << "move\n"; }
};
int main() {
const Loud a{"alpha"};
Loud b{std::move(a)}; // (1)
std::vector<Loud> v;
v.reserve(2);
Loud c{"gamma"};
v.push_back(std::move(c)); // (2)
}
What does this print?
Sign in to answer questions and track your progress
Sign In