Archived

This forum has been archived. Please start a new discussion on GitHub.

template error in nested slice modules

Hi all,
while recompiling our C++ code with Ice-3.4 I came across a compile error in slice generated files.

Ice-3.4.0, C++, Linux, gcc-4.2/4.3/4.4

It seems that any 2 nested modules with contents on the both inner and outer levels will trigger this. Here's a simple example:
module m1
{
    struct S1
    {
        int var;
    };
       
    module m2
    {
        struct S2
        {
            int var;
        };
    };
};

the compiler error:
In file included from nested.cpp:21:nested.h:242: error: specialization of ‘template<class T> struct Ice::StreamTrait’ in different namespace
/opt/Ice-3.4.0/include/Ice/Stream.h:56: error: from definition of ‘template<class T> struct Ice::StreamTrait’

Removing either S1 or S2 definition leads to a clean compilation.

Has anybody encountered a similar problem?

Cheers,
Alex

Comments

  • mes
    mes California
    Hi Alex,

    Thanks for reporting this bug. It's too bad you didn't try this a few days ago, before we released 3.4.0. :)

    I've posted a source patch here. You'll need to build a new version of slice2cpp.

    Regards,
    Mark
  • Doh! I should've tried to find some time to do it last week.

    Your patch fixed it, thanks for that. The rest built without problems.

    Thanks,
    Alex