Something went wrong. Try again.
A Tour of C++ for experienced programmers, as if C++26 is the only version that ever existed.
Something went wrong. Try again.
1234567891011121314151617181920212223242526272829#include <iostream>#include <utility>
struct Counter { int value; Counter(int v) : value(v) { std::cout << "constructed " << value << "\n"; } ~Counter() { std::cout << "destroyed " << value << "\n"; } // Move constructor promised not to throw Counter(Counter&& other) noexcept : value(other.value) { std::cout << "move used\n"; // marker for EXPECT other.value = 0; } // Delete copy to emphasize move usage Counter(const Counter&) = delete; Counter& operator=(const Counter&) = delete; Counter& operator=(Counter&& other) noexcept { value = other.value; other.value = 0; return *this; }};
int main(){ Counter a{42}; Counter b = std::move(a); // triggers noexcept move std::cout << "final b=" << b.value << "\n"; return 0;}