Your friend might be confusing C++0x with C++/CLI. The latter is a variant of C++ targeted at the .Net framework. Since the CLS doesn't allow multiple inheritance, any C++/CLI class that uses it is not portable to other CLI languages, and the compiler warns about this or throws an error, I don't know and don't care which.
It appears that my co-worker did not completely understand the restriction. Perhaps someone could comment on this further?
The restriction is about explicit inheritance of constructors, which is new in C++0x. Constructor inheritance means this:
Code:
struct A
{
A(int, int, int);
A(std::string);
};
struct B
{
using A::A;
// Equivalent to:
B(int i1, int i2, int i3) : A(i1, i2, i3) {}
B(std::string s) : A(s) {}
};
Now, the restriction blurb says that these two cases are invalid:
Code:
struct A
{
A(int);
A(float);
};
struct B
{
B(int);
};
struct C : A, B
{
using A::A;
using B::B; // Invalid: B(int) conflicts with inherited A(int)
C(float); // Invalid: C(float) conflicts with inherited A(float)
};
Simple. Although, I'm not quite sure if these restrictions still apply. The first one is sensible, but the second one feels like a great restriction.