Как я могу использовать std::map
внутри лямбда-функции Phoenix?
#include <boost\phoenix.hpp>
#include <map>
int main() {
using namespace boost::phoenix;
using namespace boost::phoenix::arg_names;
using namespace std;
map<int, int> m;
auto foo = at(m, 3);
foo();
}
Почему это не работает? Я получаю следующую ошибку:
C2440 'return': cannot convert from 'int' to 'std::pair<const _Kty,_Ty> ' xxx c:\lib\boost\phoenix\stl\container\container.hpp 167
В настоящее время я использую сообщество Visual Studio 2015 и библиотеку Boost 1.60.
std::map<int,int>::value_type
для определения типа результата, который являетсяstd::pair<const int,int>
, тогда какstd::map<int,int>::at
просто возвращает ссылку на отображаемый тип, т. е.int&
илиint const&
. - person Dan Mašek   schedule 11.04.2016std
. - person ly000   schedule 11.04.2016