当前位置:  开发笔记 > 编程语言 > 正文

模板参数阴影如何在VS2005中工作?

如何解决《模板参数阴影如何在VS2005中工作?》经验,为你挑选了1个好方法。

在GCC中,这个代码不会被编译,因为T被遮蔽,但是在VS2005中它编译没有警告,那么VS编译器的假设是什么?

template
class Foo
{
    template
    void Bar(const T& bar)
    {
      ...
    }
};

Johannes Sch.. 7

经过3个月的搜索后找到了正确答案:) 14.6.1/4符合标准:

模板参数不得在其范围内重新声明(包括嵌套范围).模板参数的名称不能与模板名称相同.

例:

template class Y {
    int T;
    // error: template-parameter redeclared
    void f() {
        char T;
        // error: template-parameter redeclared
    }
};

template class X; // error: template-parameter redeclared

如果Microsoft编译器允许它编译时没有错误甚至是警告,那么它就不符合要求.我不知道是什么可以驱使它在没有呻吟的情况下允许它.您可以尝试高警告级别.



1> Johannes Sch..:

经过3个月的搜索后找到了正确答案:) 14.6.1/4符合标准:

模板参数不得在其范围内重新声明(包括嵌套范围).模板参数的名称不能与模板名称相同.

例:

template class Y {
    int T;
    // error: template-parameter redeclared
    void f() {
        char T;
        // error: template-parameter redeclared
    }
};

template class X; // error: template-parameter redeclared

如果Microsoft编译器允许它编译时没有错误甚至是警告,那么它就不符合要求.我不知道是什么可以驱使它在没有呻吟的情况下允许它.您可以尝试高警告级别.

推荐阅读
ERIK又
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有