argument-dependent-lookup相关内容
让我们在S的声明内将f定义为S的朋友函数: struct S { friend void f() {} }; 我找不到呼叫f的方法. 是真的,那么这样的内联好友函数只能使用? struct S { friend void f() {} friend void g(S const&) {} } const s; int main() { //
..
我无意在实际代码中使用它。我承诺。 当函数参数的类型为 std 名称空间$ c> container :: iterator 和 container :: iterator 不是 typedef 对于内置类型? 例如 #include <集> #include int main() { std :: set S; fin
..
当创建按照通常规则播放的自定义容器类(即使用STL算法,使用行为良好的通用代码等)时,在C ++ 03中实现迭代器支持和成员begin /结束函数。 C ++ 11引入了两个新概念 - 基于范围的for循环和std :: begin / end。基于范围的for循环理解成员开始/结束函数,因此任何C ++ 03容器都支持基于范围的开箱即用。对于算法,推荐的方法(根据Herb Sutter的'
..
C ++ 0x标准工作草案状态(第6.5.4节)以下关于在基于范围的for循环中隐含的begin()和end()调用: 'begin'和'end'用 参数相关的查找(3.4.2)查找。对于 来说,这个名称查找的目的是 namespace std是一个关联的 名称空间。 我读这个的方式,这意味着为begin()和end()调用设置的重载解析包括以下所有内容: $ ul 在
..
struct A { enum InnerEnum {X}; A(InnerEnum x) {} }; int main() { A a(X); } 编译器提示: error C2065:'X' :undeclared identifier 编译器知道构造函数的参数类型,因此当我传递X作为参数时,编译器应该知道一个有效的参数。
..
ISO草案n3290第3.4.2节第1段中的一点: 当 postfix-expression 在函数调用中是“非限定id”,可以搜索在通常的无限额查找期间未考虑的其他命名空间,并且在那些命名空间中,可以找到不另外可见的命名空间范围友元函数声明。对搜索的这些修改取决于参数的类型(以及模板模板参数,模板参数的命名空间)。 在这里他们说“搜索的这些修改取决于参数/模板模板参数的类型/模板参数
..
我有一组模板/函数,允许我打印一个元组/对假设元组/对中的每个类型为它定义运算符
..
如果有多种可能性,C ++编译器如何决定调用哪个函数/方法? 在我的具体情况下,我有C ++运行时间的标准自由功能,我还有一个模板的自由变量,像这样: // C ++运行时库的定义(从memory.h) extern malloc(size_t s); extern void free(void * p); //我们自己的内存管理函数 extern void * OurM
..
此最小程序 模板 void foo(X x) { bar(x); } template void bar(X x) { } int main() { foo([] {}); } 使用gcc(4.8.5和5.3)编译并且无法使用clang (3.7) 我的分析如下。
..
我在查看与参数相关的查询的维基百科词条,以及(Jan 04,2014)给出了以下示例: #include int main() { std :: cout
..
我正在寻找boost :: swap实现: 命名空间boost_swap_impl { template BOOST_GPU_ENABLED void swap_impl(T& left,T& right) { using namespace std; //如果参数依赖查找失败,使用std :: swap swap (左右); } template
..
我认为这个例子最好地说明了我的问题: 命名空间N { class C { public: friend bool operator ==(const C& c,const C& x){ return true; } friend bool f(const C& c,const C& x){ return true; } }; class D { publi
..
我认为这个例子最好地说明了我的问题: 命名空间N { class C { public: friend bool operator ==(const C& c,const C& x){ return true; } friend bool f(const C& c,const C& x){ return true; } }; class D { publi
..
我认为这个例子最好地说明了我的问题: 命名空间N { class C { public: friend bool operator ==(const C& c,const C& x){ return true; } friend bool f(const C& c,const C& x){ return true; } }; class D { publi
..
我一直在阅读Josuttis的模板书,我一直在试图把我的头放在ADL。他说“ADL通过查找命名空间和类中的名称来继承,”与“调用参数的类型”相关。我只是试图看看它是如何工作查找类中的名称。我在下面举一个我的测试的例子。我看看它是如何在命名空间中查找名称。 class bryan_ns { public: class bryan { public: enum E {e1}; st
..
此问题的灵感来自 this one 。考虑代码: 命名空间ns { template
..
调用 swap 的成语是: 使用std :: swap swap(foo,bar); 这样, swap std 命名空间之外的用户定义类型。 我们应该调用 begin 和 end 以同样的方式? std :: begin; using std :: end; some_algorithm(begin(some_container),end(
..
可能重复: 为什么ADL找不到函数模板? 调用 get 似乎不调用依赖于参数的查找: t = std :: make_tuple(false,false,true); bool a = get(t); // error bool b = std :: get(t); // okay g ++ 4.6.0说: 错误:'get'未
..
我只是想知道,为什么会有人这样写: std :: iter_swap(i,k); 而不是这个? std :: swap(* i,* k); //保存了几个击键!然后,我查看了 iter_swap 的实现 $ b swap 而不是 std :: swap ,因为我们已经在 namespace std 。这就引出了下一个问题: 为什么会有人这样写:
..
当我尝试编译此代码 // void foobar template struct Foo { void bar(T t){foobar(t); }; }; void foobar(int); 模板类Foo
..