Ruchi
Ruchi

Reputation: 3

structure in template class

sample code is as follow:

struct TEMP
{
    int j;
    TEMP()
    {
     j = 0;
    }
};

template<typename T>
class classA
{
    struct strA
    {
        long i;
        strA():i(0) {}
    };
    static strA obj_str;
    classA();
};

template<typename T>
classA<T>::classA()
{}

template<typename T> 
classA<TEMP>::strA classA<TEMP>::obj_str;

int main()
{
   return 0;
}

while compiling this code, I am getting following error:

test1.cpp:32: internal compiler error: in import_export_decl, at cp/decl2.c:1970 Please submit a full bug report, with preprocessed source if appropriate. See http://bugzilla.redhat.com/bugzilla> for instructions. Preprocessed source stored into /tmp/ccUGE0GW.out file, please attach this to your bugreport.

I am building this code at x86_64-redhat-linux machine, and gcc version is gcc version 4.1.2 20070626 (Red Hat 4.1.2-14)

Please note this code was already built with gcc version 3.4.5 20051201 (Red Hat 3.4.5-2) at i386-redhat-linux machine.

Any idea why this is not able to build with gcc 4.1.2.

Thanks in advance.

Upvotes: 0

Views: 496

Answers (2)

Johannes Schaub - litb
Johannes Schaub - litb

Reputation: 507005

In any case, your code doesn't make much sense in the following declaration.

template<typename T> 
classA<TEMP>::strA classA<TEMP>::obj_str;

Because the T parameter is used nowhere in the declaration. I think you either wanted to write one of the following things:

// definition of static member of template
template<typename T> 
typename classA<T>::strA classA<T>::obj_str;

// ... or declaration of static member specialization for `T=TEMP` of template
template<> 
classA<TEMP>::strA classA<TEMP>::obj_str;

I suspect it was the first one. For the compiler crash - that surely shouldn't happen in any case :)


Edit: The bug has already been fixed in 4.4.1 at least - i think there is no need for reporting anymore.

Upvotes: 3

grigy
grigy

Reputation: 6826

I would follow the error report.

Upvotes: 0

Related Questions