Извините за запутанный заголовок. Позвольте мне объяснить через код:
#include <string>
#include <boost\function.hpp>
#include <boost\lambda\lambda.hpp>
#include <iostream>
int main()
{
using namespace boost::lambda;
boost::function<std::string(std::string, std::string)> f =
_1.append(_2);
std::string s = f("Hello", "There");
std::cout << s;
return 0;
}
Я пытаюсь использовать function
, чтобы создать функцию, которая использует выражения labda для создания нового возвращаемого значения, и вызвать эту функцию на сайте вызова s = f("Hello", "There");
Когда я компилирую это, я получаю:
1>------ Build started: Project: hacks, Configuration: Debug x64 ------
1>Compiling...
1>main.cpp
1>.\main.cpp(11) : error C2039: 'append' : is not a member of 'boost::lambda::lambda_functor<T>'
1> with
1> [
1> T=boost::lambda::placeholder<1>
1> ]
Использование MSVC 9.
Мое фундаментальное понимание function
и lambda
s может отсутствовать. Эти учебники и документы не помогли сегодня утром.
Как мне сделать то, что я пытаюсь сделать?