adl_conformance_no_using.cpp
来自「Boost provides free peer-reviewed portab」· C++ 代码 · 共 111 行
CPP
111 行
// Boost.Range library//// Copyright Thorsten Ottosen 2003-2004. Use, modification and// distribution is subject to the Boost Software License, Version// 1.0. (See accompanying file LICENSE_1_0.txt or copy at// http://www.boost.org/LICENSE_1_0.txt)//// For more information, see http://www.boost.org/libs/range///#include <iostream>namespace A{ namespace detail { template< typename T > int f( const T& x ) { // Default: std::cout << 1 << std::endl; return 1; } template< typename T > int adl_f2( const T& x, int* ) { return f( x ); } template< typename T > int adl_f( const T& x ) { return adl_f2( x, 0 ); } } template< typename T > int f( const T& x ) { return detail::adl_f( x ); } template< typename T > int adl_f2( const T& x, int ) { return detail::f( x ); } //-------------------------------- class C {};/* // Optional: int f( const C& x ) { std::cout << 2 << std::endl; }*/ template< typename T > class D {};/* // Optional: template< typename T > int f( const D< T >& x ) { std::cout << 3 << std::endl; } */} namespace B{ class C {}; // Optional:/* int f( const C& ) { std::cout << 4 << std::endl; }*/ template< typename T > class D {};/* // Optional: template< typename T > int f( const D< T >& x ) { std::cout << 5 << std::endl; } */}int main(){ A::f( 42 ); A::C ac; A::f( ac ); A::D< int > ad; A::f( ad ); B::C bc; A::f( bc ); B::D< int > bd; A::f( bd );}
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?