两者几乎都是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,我不确定,它会如何解决。
任何帮助表示赞赏。