This is the mail archive of the
gcc-bugs@gcc.gnu.org
mailing list for the GCC project.
[Bug c++/18296] New: Misleading diagnostic for recursive template instantiation
- From: "rguenth at tat dot physik dot uni-tuebingen dot de" <gcc-bugzilla at gcc dot gnu dot org>
- To: gcc-bugs at gcc dot gnu dot org
- Date: 4 Nov 2004 14:17:15 -0000
- Subject: [Bug c++/18296] New: Misleading diagnostic for recursive template instantiation
- Reply-to: gcc-bugzilla at gcc dot gnu dot org
template <class E, class C>
struct CompFwd;
struct Brick;
template <int Dim, class T, class EngineTag>
struct Engine;
template <int Dim, class T, class E>
class Array;
template <class Subject>
struct ComponentView;
template<int Dim, class T, class EngineTag>
struct ComponentView<Array<Dim, T, EngineTag> >
{
typedef Array<Dim, T, EngineTag> Subject_t;
typedef typename Subject_t::Engine_t Engine_t;
typedef Array<Dim, T, CompFwd<Engine_t, int> > Type_t;
};
template <int Dim, class T, class EngineTag>
struct Array
{
typedef Engine<Dim, T, EngineTag> Engine_t;
typedef Array<Dim, T, EngineTag> This_t;
typename ComponentView<This_t>::Type_t
comp(int i1) const;
};
typedef Array<1, double, Brick> Array_t;
typedef ComponentView<Array_t>::Type_t CView_t;
causes g++ to emit:
tests> g++-3.4 -c notype.cpp
notype.cpp: In instantiation of `Array<1, double, Brick>':
notype.cpp:19: instantiated from `ComponentView<Array_t>'
notype.cpp:36: instantiated from here
notype.cpp:30: error: no type named `Type_t' in `struct ComponentView<Array_t>'
which could be improved to mention the missing of the type is caused by aborted
recursive instantiation of struct ComponentView<Array_t>. At the moment the
diagnostic is at least misleading, as there is a Type_t in struct
ComponentView<Array_t>.
--
Summary: Misleading diagnostic for recursive template
instantiation
Product: gcc
Version: 3.4.3
Status: UNCONFIRMED
Severity: enhancement
Priority: P2
Component: c++
AssignedTo: unassigned at gcc dot gnu dot org
ReportedBy: rguenth at tat dot physik dot uni-tuebingen dot de
CC: gcc-bugs at gcc dot gnu dot org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=18296