msvc баг
От: Аноним  
Дата: 31.08.07 06:29
Оценка:
Вот такой баг компилятора.. вчера наткнулся

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 правильно ругается
Re: msvc баг
От: Константин Л. Франция  
Дата: 31.08.07 10:41
Оценка:
Здравствуйте, Аноним, Вы писали:

[]

Не вижу проблемы в этом коде
Re[2]: msvc баг
От: Vain Россия google.ru
Дата: 31.08.07 10:47
Оценка:
Здравствуйте, Константин Л., Вы писали:

КЛ>[]

КЛ>Не вижу проблемы в этом коде
Но это функцианальный каст, а не с каст. Или я не прав?
[In theory there is no difference between theory and practice. In
practice there is.]
[Даю очевидные ответы на риторические вопросы]
Re[3]: msvc баг
От: Константин Л. Франция  
Дата: 31.08.07 12:37
Оценка:
Здравствуйте, Vain, Вы писали:

V>Здравствуйте, Константин Л., Вы писали:


КЛ>>[]

КЛ>>Не вижу проблемы в этом коде
V>Но это функцианальный каст, а не с каст. Или я не прав?

пока читал длинный код, забыл что там private наследование
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.