Вот пример коллекции "join" * Актеры и фильмы:
https://github.com/mongodb/cookbook/blob/master/ content / patterns / pivot.txt
Использует метод .mapReduce()
* join - альтернативу объединению в документарно-ориентированных базах данных
typedef FT (*Implicit_function)(FT, FT, FT);
Вы объявили, что функция принимает один и тот же тип для всех 3 параметров, а также возвращает тот же тип.
Надо было typedef FT (*Implicit_function)(FT, FT, Point_vec);
Исправить подпись Implicit_function
, и ваша проблема должна исчезнуть.
В случае, если это хотя бы C ++ 11, вы также должны предпочесть std::function
необработанному указателю на функцию, чтобы можно было принимать функции или лямбды с привязками / перехватами.
FT_to_point_function_wrapper::function
должно быть объявлено const
, так как оно устанавливается только списком инициализатора в конструкторе. Если вы используете C ++ 11, вы можете также объявить FT_to_point_function_wrapper::FT_to_point_function_wrapper
как constexpr
.
FT_to_point_function_wrapper::operator()
следует также объявить const
.