#include <iostream>
template<typename T>
T&& my_move(const T& t) noexcept {
return std::move(const_cast<T&>(t));
}
struct T
{
T() = default;
T(const T&) { std::cout << "copy ctor\n"; }
T(T&&) { std::cout << "move ctor\n"; }
};
int main() {
const T t;
T a = my_move(t);
}
I2luY2x1ZGUgPGlvc3RyZWFtPgoKdGVtcGxhdGU8dHlwZW5hbWUgVD4KVCYmIG15X21vdmUoY29uc3QgVCYgdCkgbm9leGNlcHQgewogICAgcmV0dXJuIHN0ZDo6bW92ZShjb25zdF9jYXN0PFQmPih0KSk7Cn0KCnN0cnVjdCBUCnsKICAgIFQoKSA9IGRlZmF1bHQ7CiAgICBUKGNvbnN0IFQmKSB7IHN0ZDo6Y291dCA8PCAiY29weSBjdG9yXG4iOyB9CiAgICBUKFQmJikgICAgICB7IHN0ZDo6Y291dCA8PCAibW92ZSBjdG9yXG4iOyB9Cn07CgppbnQgbWFpbigpIHsKICAgIGNvbnN0IFQgdDsKICAgIFQgYSA9IG15X21vdmUodCk7Cn0K