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

iam*_*ind 5 c++ compiler-errors g++ llvm-clang clang++

两者几乎都是Ubuntu 14.04中最新版本的g ++和clang ++.下面的代码用g ++编译好.

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

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

int main () {}
Run Code Online (Sandbox Code Playgroud)

但是,使用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;
Run Code Online (Sandbox Code Playgroud)

它是非标准代码吗?

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