// Copyright 2018 Andrzej Krzemieński // Copyright 2018 Peter Dimov // Distributed under the Boost Software License, Version 1.0. #include namespace boost { template struct Wrapper { T value; }; template inline void swap( Wrapper & w, Wrapper & v ) { boost::swap( w, v ); } } // namespace boost int main() { boost::Wrapper const w = { 2 }; boost::Wrapper const v = { 3 }; swap( w, v ); }