#ifdef BOOST_ADL_WORKAROUND_ namespace boost_noncopyable // protection from unintended ADL { class noncopyable { protected: noncopyable() {} ~noncopyable() {} private: // emphasize the following members are private noncopyable( const noncopyable& ); const noncopyable& operator=( const noncopyable& ); }; } namespace boost { typedef boost_noncopyable::noncopyable noncopyable; } #else #include "boost/noncopyable.hpp" #endif class you : private boost::noncopyable { }; namespace boost { template void find_me(const T&t) { } } int main() { you y; find_me(y); return 0 ; }