Lightning Talk: Writing a Better std::move
summary
A refactor exposes two concrete bugs: std::move can produce const rvalue references and can silently move out of lvalue references. The fix adds static_assert checks, uses macro->string reflection to ensure the argument is an id-expression, and implements three move variants: a compile-error-on-nonowning move, a conditional move/forward, and an unconditional move. The implementation handles reference collapsing edge cases, bans certain member-expression syntax, and is released in the things library.
AI-written summary · about








