> Yes, that occurs if you have a
>
> using namespace std;
>
> statement in your code, and you are using Microsoft Visual C++ 6 (it's
> actually a compiler bug).
>
> Removing (or possibly moving until after all your includes, or just
> re-ordering your includes) the using statement will fix the issue.
>

Thanks very much for that hint John,
I found two places in our header which are using the "using namespace std;". After I have switched that to the explicit "using" statements I could also switch back to your default "user.hpp".

Perhaps I can ask one more question about this strange behaviour, just because I want to understand why:
I try to use my own string class, which is inherited from std::string. Defining "VC6_STUPID_BEHAVIOUR" in the example code below compile and run the code successfuly, using the expanded name leads to following compiler error:

        error C2614: 'MyCString' : illegal member initialization: 'string' is not a base or member

You know WHY??? Also because of the same compiler error in VC6 or is there something else wrong.
On Solaris and HP-UX it works fine in every combination.

// vvvvvvvvvvvvvvv snipp vvvvvvvvvvvvvvvv
#include <string>
#include <iostream>

#ifdef VC6_STUPID_BEHAVIOUR
        using std::string;
#       define std_string string
#else
#       define std_string std::string
#endif

class MyCString
        : public std_string
{
        public:
                MyCString(const char *s_);
                        : std_string(s_)
                {
                        std::cout << "\"" << *this << "\"" << std::endl;
                };
};

int main (int argc, char *argv[])
{
        MyCString s(argv[0]);
        return 0;
}
// ^^^^^^^^^^^^ snipp ^^^^^^^^^^^^