I had some C++03 code that implemented `swap` for certain classes, to make `std::sort` (and other functions) fast.

Unfortunately for me, `std::sort` now seems to use `std::move`, which means my code is now **much slower** than it was in C++03.

I know I can use `#if __cplusplus >= 201103L` to conditionally define a move-constructor/move-assignment operator, but I'm wondering if there's a better way that doesn't use preprocessor hacks?

(I'd like to avoid the proprocessor hacks because they would be ugly, since not only do I have to test for compiler versions like `_MSC_VER >= 1600`, but also because they wouldn't work well with tools like [LZZ](http://www.lazycplusplus.com/) that don't recognize C++11 move syntax but force me to preprocess the code.)