Обещанный пример (выдернуто из контекста, поэтому с глупыми комментариями
![:) :)](http://s.wrk.ru/s/smile.gif)
) :
AutoRef<TypedRegValue> UpperFiltersEx(interface_cast<RegValue>(UpperFilters));
// Здесь будет 2 временных объекта: при вызове interface_cast ("обёртка" вокруг UpperFilters) и // UpperFiltersEx() (типа TypedRegValue c RegValue в качестве параметра) if (UpperFiltersEx)
{
result = UpperFiltersEx->SetValue(UpperFiltersEx->GetType(), UpperFiltersEx->GetValue() + NewUpper);
// И здесь 2: результат сложения и "обёртка" вокруг этого результата, // приводящая его к типу второго аргумента SetValue() }
Итого к коду из 3-х значащих строчек, по-вашему, надо добавить ещё 4. Соотношение хоть и не 5:20, но лично меня впечатляет.
Кстати, "обёртка" вокруг UpperFiltersEx->GetValue() + NewUpper называется Variant и имеет 5 конструкторов с различными типами аргумента. Что позволяет использовать его в т.ч. в качестве возвращаемого значения. Как вы собираетесь заменить эту функциональность фабриками?
Broken Windows® cures my ills and makes me feel alright... ©
Это сообщение редактировалось 10.12.2007 в 21:45