c++ - 非限定查找和(可能)依赖的基类

标签 c++

考虑以下程序:

template <typename T>
struct t
{
    struct base { void f1(); };
    struct derived : base
    {
        void f2()
        {
            f1();
        }
    };
};

derived::f2中,非限定查找用于查找f1base 会被搜索吗? base::f1 会被找到吗? base 是依赖类型吗?

请引用标准来证实您的答案。

最佳答案

是的,base 是相关的,因此找不到 f1。在 C++03 中,addition 明确了这一点。 14.6.1/2d(在 C++98 中不存在),在 C++0x 中直接由 14.6.2.1/6 (n3126) 声明。

它的依赖很重要,因为下面是可能的

// for T = int, f1 does not exist.
template<> struct t<int>::base { };

关于c++ - 非限定查找和(可能)依赖的基类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3787845/

相关文章:

c++ - 更有效的 vector 比较

c++ - 使用系统调用打开 Outlook 2010 以发送预格式化的电子邮件

java - g++ 编译后的核心转储 + 与 jni 的链接以及随后使用 C++ 和 Java 执行的应用程序

c++ - 在没有 .sln/.project 文件的情况下,C/C++ 中的开源项目是如何执行的?

c++ - 使用 OpenMP 和减少优化外循环

c++ - 优雅地终止基于 Boost Asio 的 Windows 控制台应用程序

c++ - 从单个客户端连接到多个服务器

c++ - 在类中使用 ifstream

c++ - Boost 自动链接库不是由 Boost 构建的,但预期的库是构建的

c++ - 使用 clock() 函数安排任务时出现问题