Здравствуйте, Сергей Зизев, Вы писали:
СЗ>Здравствуйте, SergeCpp, Вы писали:
SC>>Здравствуйте,все!
SC>>Очень странно...
SC>>VC6 поддерживает
СЗ>Ошибка в VC6
SC>>if( int ok( 123 ) )
SC>>{
SC>> //...
SC>>}
СЗ>Выражение int ok( 123 ) есть ни что иное как определние функции, оно не может стоят в условии оператора if.
СЗ>Условием оператора if может быть либо выражение либо декларатор, поэтому если Вы хотите внутри блока if объявить переменную ok и присвоить ей значение, то синтаксис должен быть такой:
СЗ>СЗ>if (int ok = 123)
СЗ>{
СЗ> std::cout << ok << std::endl;
СЗ>}
СЗ>
Я не согласен с Вами.
"int ok( 123 )" есть объявление объекта типа "int" с именем "ok"...
Дело НЕ в int.
class SomeType
{
//... где-то тут ЕСТЬ конструктор с параметром типа "int"
operator bool(){ return true; } // например
};
if( SomeType ok( 123 ) ) // конструируем из 123 и проверяем "не отходя от кассы"
{
// do use "ok"
}
Это РАБОТАЕТ в VC6