https://gcc.gnu.org/bugzilla/show_bug.cgi?id=67398

--- Comment #5 from Mikhail Maltsev <miyuki at gcc dot gnu.org> ---
$ cat test3.cc 
template <typename>
struct B {
    static const int staticMetaObject;
};

template <typename T>
struct D {
    int stringdata0 = T::className;
} staticStringData{};

template <typename T>
const int B<T>::staticMetaObject{staticStringData<T>};

void foo()
{
    B<int> constraints;
    constraints.staticMetaObject;
}

$ cc1plus test3.cc                                                              
test3.cc: In instantiation of 'D staticStringData<int>':
test3.cc:12:50:   required from 'const int B<int>::staticMetaObject'
test3.cc:17:17:   required from here
test3.cc:9:3: internal compiler error: Segmentation fault
 } staticStringData{};
   ^
0xc847bf crash_signal
        /home/miyuki/gcc/src/gcc/toplev.c:352
0x5e36b3 extend_ref_init_temps(tree_node*, tree_node*, vec<tree_node*, va_gc,
vl_embed>**)
        /home/miyuki/gcc/src/gcc/cp/call.c:9892
0x5e3724 extend_ref_init_temps(tree_node*, tree_node*, vec<tree_node*, va_gc,
vl_embed>**)
        /home/miyuki/gcc/src/gcc/cp/call.c:9914
0x6868d9 store_init_value(tree_node*, tree_node*, vec<tree_node*, va_gc,
vl_embed>**, int)
        /home/miyuki/gcc/src/gcc/cp/typeck2.c:806
0x5ef6ae check_initializer
        /home/miyuki/gcc/src/gcc/cp/decl.c:6089


$ clang++ -std=c++14 -S test3.cc 
test3.cc:9:2: error: expected ';' after struct
} staticStringData{};
 ^
 ;
test3.cc:9:3: error: C++ requires a type specifier for all declarations
} staticStringData{};

Reply via email to