Questions tagged «name-lookup»


4
ADL为什么找不到功能模板?
C ++规范的哪一部分限制了依赖于参数的查找,无法在关联的命名空间集中查找函数模板?换句话说,为什么main下面的最后一个调用无法编译? namespace ns { struct foo {}; template<int i> void frob(foo const&) {} void non_template(foo const&) {} } int main() { ns::foo f; non_template(f); // This is fine. frob<0>(f); // This is not. }

3
派生对基类成员数据的模板类访问
这个问题是一个在问的赞助这个线程。 使用以下类定义: template <class T> class Foo { public: Foo (const foo_arg_t foo_arg) : _foo_arg(foo_arg) { /* do something for foo */ } T Foo_T; // either a TypeA or a TypeB - TBD foo_arg_t _foo_arg; }; template <class T> class Bar : public Foo<T> { public: Bar (const foo_arg_t …

7
将'typedef'从基础类传播到'模板'的派生类
我试图定义只包含typedef的基类。 template<typename T> class A { public: typedef std::vector<T> Vec_t; }; template<typename T> class B : public A<T> { private: Vec_t v; // fails - Vec_t is not recognized }; 为什么在BI中收到无法识别Vec_t的错误,我需要显式地编写它? typename A<T>::Vec_t v;

2
为什么此模板功能无法正常运行?
我在阅读有关模板函数的信息,并对这个问题感到困惑: #include <iostream> void f(int) { std::cout << "f(int)\n"; } template<typename T> void g(T val) { std::cout << typeid(val).name() << " "; f(val); } void f(double) { std::cout << "f(double)\n"; } template void g<double>(double); int main() { f(1.0); // f(double) f(1); // f(int) g(1.0); // d f(int), this is surprising …

3
脱机成员函数定义是否需要使用低于全球范围的完全限定的类名?
这个问题让我想知道在类外成员函数定义中完全限定类名(包括全局作用域运算符)是否有用/必需。 一方面,我以前从未见过这样做(正确执行的语法似乎还不清楚)。另一方面,C ++名称查找非常简单,因此可能存在一个极端情况。 题: 是否曾经有过引入超出成员函数定义的定义 ReturnType (::Fully::Qualified::Class::Name::MemberFunctionName)(...) { ... } 不同于 ReturnType Fully::Qualified::Class::Name::MemberFunctionName(...) { ... }(没有全局作用域::前缀)的情况? 请注意,成员函数定义必须放在封闭类的名称空间中,因此这不是有效的示例。
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.