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&, что за ерунда?