Почему неправильно выводится аргумент шаблона?
От: MaximE Великобритания  
Дата: 30.12.02 11:12
Оценка:
Long lines wrapped. -- ПК.

        TransactionData* td = new TransactionDataImpl(rq, ids[n]);
        const std::vector<long> tradeIds = td->GetTradesIds();

        // вот это работает правильно
        //std::transform(tradeIds.begin(), tradeIds.end(), 
        //    std::inserter(trades, trades.back()), 
        //    std::bind1st(std::mem_fun(&TransactionData::GetTrade), td));

        // но я хочу вот так
        typedef std::set<BasicTradeData*> SETTRADES;
        SETTRADES trades;
        std::for_each(tradeIds.begin(), tradeIds.end(), 
            std::compose1(std::bind1st(std::mem_fun_ref(SETTRADES::insert), trades),
            std::bind1st(std::mem_fun(&TransactionData::GetTrade), td)));


d:\Program Files\Microsoft Visual Studio .NET\Vc7\include\stlport\stl\_function.h(138) : 
warning C4181: qualifier applied to reference type ignored
        d:\C++\Focus_TransactionService\Sources\Focus\DataAccess\DataAccess.cpp(80) : 
see reference to class template instantiation '_STL::binder1st<_Operation>' being compiled
        with
        [
            _Operation=_STL::mem_fun1_ref_t<_STL::pair<_STL::set<BasicTradeData *,
            _STL::less<BasicTradeData *>,_STL::allocator<BasicTradeData *>>::iterator,bool>,
            _STL::set<BasicTradeData *,_STL::less<BasicTradeData *>,
            _STL::allocator<BasicTradeData *>>,BasicTradeData & >
        ]
d:\Program Files\Microsoft Visual Studio .NET\Vc7\include\stlport\stl\_function.h(138) : 
error C2529: '__x' : reference to reference is illegal


Аргумет метода set::insert выводится не как BasicTradeData*&, а как BasicTradeData&, что за ерунда?
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.