здравствуйте.
у меня такой вопрос, почему не копиляется следующий код:
std::map<std::string, int> algPars;
std::for_each(algPars.begin(), algPars.end(), boost::bind(atoi, _1->first.c_str()));
пример бессмысленный, меня интересует почему он не компиляется.
и ещё примерчик
namespace lmbd = boost::lambda;
std::vector<int> intarray(10);
boost::function<void(int)> op2 = (std::cout << intarray[lmbd::_1]);
op2(2);
тоже не хочет компилиться
подскажите пожалуйста. заранее спасибо.
Здравствуйте, Аноним, Вы писали:
А>здравствуйте.
А>у меня такой вопрос, почему не копиляется следующий код:
А>А>std::map<std::string, int> algPars;
А>std::for_each(algPars.begin(), algPars.end(), boost::bind(atoi, _1->first.c_str()));
А>
Потому что, как это ни прискорбно, синтаксис такого не позволяет. Так что все несколько сложнее
std::map<std::string, int> algPars;
typedef std::map<std::string, int>::value_type vt;
std::for_each(algPars.begin(), algPars.end(),
boost::bind(atoi,
boost::bind(&string::c_str,
boost::bind(&vt::first, _1)
)
)
);
А>и ещё примерчик
А>А>namespace lmbd = boost::lambda;
А>std::vector<int> intarray(10);
А>boost::function<void(int)> op2 = (std::cout << intarray[lmbd::_1]);
А>op2(2);
А>
А>тоже не хочет компилиться
Функтор создается вот так (static_cast из-за перегрузки):
(std::cout << lmbd::bind(static_cast<int& (std::vector<int>::*)(size_t)>(&std::vector<int>::operator[]),
intarray, lmbd::_1));
но какой у него тип, и как это присвоить boost::function, я ответить затрудняюсь...
спасибо большое. хотя вопрос со вторым примером конечно остался открытым

. я попытался что-то сделать с учетом предложенной конструкции но не получилось.
это я был аноним

.