在块范围内使用重新声明

时间:2015-01-16 05:16:03

标签: c++ using-declaration

以下是导致编译时错误的代码:

#include <iostream>

int a;

void f()
{
    using ::a;
    using ::a; //'a' is already declared in this scope. 
}

int main(){ }

DEMO

标准所说的是(N4296::7.3.3/10 [namespace.udecl]):

  

使用声明是声明,因此可以使用   反复允许多个声明在哪里(并且只在哪里)。

所以,我认为任何重新声明在块范围内都是不正确的。但是程序

#include <iostream>

void f()
{
    extern int a;
    extern int a;
}

int main(){ }

DEMO

工作正常。那么为什么实际上阻止使用重新声明在块范围内出现两次呢?

0 个答案:

没有答案