属性“弃用”到C ++中的命名空间17

时间:2017-09-05 10:11:12

标签: c++ attributes c++17

我已经创建了C ++程序来试验C ++ 17的deprecated关键字。

它在 clang(3.8.0)中运行良好,但是, g ++(5.4.0)会出错。

source_file.cpp:9:11: error: expected identifier before ‘[’ token
 namespace [[ deprecated ]] bar
           ^
source_file.cpp:9:28: error: ‘bar’ does not name a type
 namespace [[ deprecated ]] bar
                            ^
source_file.cpp: In function ‘int main()’:
source_file.cpp:16:5: error: ‘bar’ has not been declared
     bar::var = 10;

为什么吗

#include <iostream>
using namespace std;

namespace foo  
{ 
  int var; 
}

namespace [[ deprecated ]] bar
{ 
  int var; 
}

int main() 
{
    bar::var = 10;
    return 0;
}

1 个答案:

答案 0 :(得分:1)

线索在错误消息中:“[令牌之前的预期标识符”。 标识符bar,必须在 [之前显示。所以:

namespace bar [[deprecated]]
{ } 

使用GCC6.3进行测试