[Bug c++/39475] c++0x type-traits should error out in case of incompleteness
d dot frey at gmx dot de
gcc-bugzilla@gcc.gnu.org
Mon Mar 16 23:49:00 GMT 2009
------- Comment #3 from d dot frey at gmx dot de 2009-03-16 23:49 -------
One more thought on the diagnostics: There are two cases: Incomplete types
(like in the initial example in the description of this PR) and recursive
template instantiations (see attachment). I think the latter produces a
diagnostic which suggests it is the former. This problem not only affects
C++0x, it also happens for "normal" C++:
frey@viasko:~/work/test/recursive_instantiation$ cat t.cc
template< typename T >
struct foo
{
typename T::type dummy();
};
template< typename T >
struct bar
{
typedef void type;
foo< bar > p;
};
foo< bar< int > > x;
frey@viasko:~/work/test/recursive_instantiation$ g++ t.cc
t.cc: In instantiation of 'bar<int>':
t.cc:4: instantiated from 'foo<bar<int> >'
t.cc:14: instantiated from here
t.cc:11: error: 'bar<T>::p' has incomplete type
t.cc:3: error: declaration of 'struct foo<bar<int> >'
frey@viasko:~/work/test/recursive_instantiation$
g++ is Ubuntu's GCC 4.3.2. The error message says bar<T>::p is incomplete, but
there is no hint why this is the case. Would it be possible to generally
improve this type of diagnostic? Should I open yet another PR or is that not
possible/worth it/...?
--
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=39475
More information about the Gcc-bugs
mailing list