What is the difference between the two marked lines in the code below?
template <const char *N> struct A {
static const char *p;
};
template <class T> struct B {
static const char c[1];
typedef A<B<T>::c> C; // <---
// typedef A<c> C; // <---
};
Error that i recived is:
test_t.C: In instantiation of ‘const char B::c [1]’:
test_t.C:7: instantiated from here
test_t.C:7: internal compiler error: in instantiate_decl, at cp/pt.c:15628
Please submit a full bug report,
with preprocessed source if appropriate.
See http://gcc.gnu.org/bugs.html for instructions.
“internal compiler error” roughly translates as “You may have supplied broken code, or reasonable but confusing code. Either way, you’re out of luck. Please get the next release version and hope for the best.”