adl.cpp

来自「非常著名的C++ Templates 完全导引范例配套的原代码」· C++ 代码 · 共 36 行

CPP
36
字号
/* The following code example is taken from the book * "C++ Templates - The Complete Guide" * by David Vandevoorde and Nicolai M. Josuttis, Addison-Wesley, 2002 * * (C) Copyright David Vandevoorde and Nicolai M. Josuttis 2002. * Permission to copy, use, modify, sell and distribute this software * is granted provided this copyright notice appears in all copies. * This software is provided "as is" without express or implied * warranty, and with no claim as to its suitability for any purpose. */#include <iostream>namespace X {    template<typename T> void f(T);}namespace N {    using namespace X;    enum E { e1 };    void f(E) {         std::cout << "N::f(N::E) called\n";     }}void f(int) {     std::cout << "::f(int) called\n"; }int main() {    ::f(N::e1);  // qualified function name: no ADL    f(N::e1);    // ordinary lookup finds ::f() and ADL finds N::f(),}                //  the latter is preferred

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?