Вот такой баг компилятора.. вчера наткнулся
struct base
{
};
//////////////////////////////////////////////////////////////////////////
struct derived
: private base
{
};
struct KTest
{
KTest(base*)
{
}
operator void *()
{
return 0;
}
void operator+(const KTest &)
{
}
};
void f2(const KTest &)
{
}
void f3(KTest)
{
}
int main()
{
derived *p(0);
// KTest ok(p);
KTest k=KTest(p);//*
void *vp=KTest(p);//*
k+KTest(p);//*
f2(KTest(p));
f3(KTest(p));
return 0;
}
msvc 7.1 ест аж бегом. Приводит derived к base и дергает конструктор KTest::KTest(base*)
а gcc правильно ругается