#ifndef MyClassH
#define MyClassH
#include <algorithm>
namespace A {
namespace B {
namespace C {
class MyClass
{
double Value1_ = 0.0;
double Value2_ = 0.0;
public:
void swap( MyClass& other ) noexcept
{
std::swap( Value1_, other.Value1_ );
std::swap( Value2_, other.Value2_ );
}
};
} // namespace C
} // namespace B
} // namespace A
namespace std
{
template<> void swap( A::B::C::MyClass& lhs, A::B::C::MyClass& rhs ) noexcept { lhs.swap( rhs ); }
}
#endif
int main()
{
A::B::C::MyClass mc1, mc2;
std::swap( mc1, mc2 );
}
I2lmbmRlZiBNeUNsYXNzSAojZGVmaW5lIE15Q2xhc3NICgojaW5jbHVkZSA8YWxnb3JpdGhtPgoKbmFtZXNwYWNlIEEgewpuYW1lc3BhY2UgQiB7Cm5hbWVzcGFjZSBDIHsKCmNsYXNzIE15Q2xhc3MKewogICBkb3VibGUgVmFsdWUxXyA9IDAuMDsKICAgZG91YmxlIFZhbHVlMl8gPSAwLjA7CnB1YmxpYzoKICAgdm9pZCBzd2FwKCBNeUNsYXNzJiBvdGhlciApIG5vZXhjZXB0CiAgIHsKICAgICAgc3RkOjpzd2FwKCBWYWx1ZTFfLCBvdGhlci5WYWx1ZTFfICk7CiAgICAgIHN0ZDo6c3dhcCggVmFsdWUyXywgb3RoZXIuVmFsdWUyXyApOwogICB9Cn07Cgp9IC8vIG5hbWVzcGFjZSBDCn0gLy8gbmFtZXNwYWNlIEIKfSAvLyBuYW1lc3BhY2UgQQoKbmFtZXNwYWNlIHN0ZAp7CiAgIHRlbXBsYXRlPD4gdm9pZCBzd2FwKCBBOjpCOjpDOjpNeUNsYXNzJiBsaHMsIEE6OkI6OkM6Ok15Q2xhc3MmIHJocyApIG5vZXhjZXB0IHsgbGhzLnN3YXAoIHJocyApOyB9Cn0KI2VuZGlmCgppbnQgbWFpbigpCnsKCUE6OkI6OkM6Ok15Q2xhc3MgbWMxLCBtYzI7CglzdGQ6OnN3YXAoIG1jMSwgbWMyICk7Cn0=