我试图用Clang编译下面的代码

class Prasoon{

  static const int dummy = 0;

};
int const Prasoon::dummy = 0;

int main(){}

使用Clang.编译时,上面的代码没有给出任何错误
prasoon@prasoon-desktop ~ $ clang++ --version
clang version 2.8 (trunk 107611)
Target: i386-pc-linux-gnu
Thread model: posix
prasoon@prasoon-desktop ~ $ cat bug.cpp
class Prasoon{

      private:
      static const int dummy = 0;

    };

int const Prasoon::dummy = 0;

int main(){}
prasoon@prasoon-desktop ~ $ clang++ bug.cpp
prasoon@prasoon-desktop ~ $

但是,当我用g++编译相同的代码时,出现了预期的错误。
prasoon@prasoon-desktop ~ $ g++ bug.cpp
bug.cpp:8: error: duplicate initialization of ‘Prasoon::dummy’

那么,我是否在Clang中发现了一个错误?

最佳答案

是的,您发现了一个错误。

该规则在标准中表示:

关于c++ - 我在Clang中发现错误了吗?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/3531296/

10-11 22:55