This is the mail archive of the gcc-prs@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

c++/7394: <synopsis of the problem (one line)>


>Number:         7394
>Category:       c++
>Synopsis:       <synopsis of the problem (one line)>
>Confidential:   no
>Severity:       serious
>Priority:       medium
>Responsible:    unassigned
>State:          open
>Class:          ice-on-legal-code
>Submitter-Id:   net
>Arrival-Date:   Wed Jul 24 11:16:00 PDT 2002
>Closed-Date:
>Last-Modified:
>Originator:     Gary Barnes
>Release:        3.0.1
>Organization:
>Environment:
System: Linux smbear.attbi.com 2.4.3-20mdk #1 Sun Apr 15 23:03:10 CEST 2001 i686 unknown
Architecture: i686

	
host: i686-pc-linux-gnu
build: i686-pc-linux-gnu
target: i686-pc-linux-gnu
configured with: ./configure --prefix=/usr/local
>Description:
Compiler says to submit a bug report.

>How-To-Repeat:

g++ -c foo.cc -g -MMD -frepo -ansi -pedantic -fshort-enums -W -Wall -Wundef \
-Wshadow -Wpointer_arith -Wbad-function-cast -Wcast-qual -Wcast-align -Wwrite-strings \
-Wconversion -Wsign-compare -Wredundant-decls -Wunreachable-code -Wmissing-declarations \
-Winline -fmessage-length=99999 -Werror
foo.cc: In instantiation of `One::Two::One_Two<int>':
foo.cc:44:   instantiated from here
foo.cc:5: Internal compiler error in retrieve_specialization, at cp/pt.c:740
Please submit a full bug report,
with preprocessed source if appropriate.
See <URL:http://www.gnu.org/software/gcc/bugs.html> for instructions.


foo.cc has no #includes's.  The code is below.


namespace One {
    namespace Two {
        namespace Three {
            template <class Outer_t>
            class One_Two_Three {
            public:
                One_Two_Three () : I (2) {};
                int I;
                void In123 (int _I);
            };
        }
    }
}

namespace One {
    namespace Two {
        template <class Some_t>
        class One_Two {
        public:
            One_Two () : J (1) {};
            int J;
            void In12 (int _J);
        private:
            int K;
            template <class Outer_t>
            friend class One::Two::Three::One_Two_Three;
            typedef One::Two::Three::One_Two_Three <One_Two> Friend123;
            Friend123   Our_Friend;
        };
    }
}
#if 0
template <Outer_t>
void One::Two::Three::One_Two_Three <Outer_t>::In123 (int _I) {
    I = _I;
}

template <Some_t>
void One::Two::One_Two <Some_t>::In12 (int _J) {
    J = _J
}
#endif
int main (int, char**) {
    auto One::Two::One_Two <int>    X;
}

>Fix:
	
>Release-Note:
>Audit-Trail:
>Unformatted:


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]