Вот такой баг компилятора.. вчера наткнулся
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 правильно ругается
[In theory there is no difference between theory and practice. In
practice there is.]
[Даю очевидные ответы на риторические вопросы]
Здравствуйте, Vain, Вы писали:
V>Здравствуйте, Константин Л., Вы писали:
КЛ>>[]
КЛ>>Не вижу проблемы в этом коде
V>Но это функцианальный каст, а не с каст. Или я не прав?
пока читал длинный код, забыл что там private наследование