使用g ++(4.9)编译模板代码很好,但不能用clang ++(3.4)编译并给出错误

时间:2014-07-19 10:57:40

标签: c++ compiler-errors g++ clang++ llvm-clang

两者几乎都是Ubuntu 14.04中最新版本的g ++和clang ++。以下代码compiles fine with g++

template<typename T>
struct B { static const int i = T::value; };

struct D : B<D> { static const int value = 0; } d;

int main () {}

但是,使用clang ++(即使使用-std = c ++ 11),会抛出错误

error: no member named 'value' in 'D'
struct B { static const int i = T::value; };
                                ~~~^
note: in instantiation of template class 'B<D>' requested here
struct D : B<D> { static const int value = 0; } d;

这是非标准代码吗?

上面的示例只是一个更大代码的片段,必须移植到iOS / Android。 iOS支持clang,我不确定,它会如何解决。
任何帮助表示赞赏。

0 个答案:

没有答案