#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 );
}