Function call
boost::type_erasure::call
 
Synopsis
template<typename Concept, typename Op, class... U> 
  unspecified call(const binding< Concept > & binding, const Op &, 
                   U &&... args);
template<typename Op, class... U> unspecified call(const Op &, U &&... args);
Description
Отправляет стертую функцию типа.
<Op>должно быть примитивным понятием, которое присутствует в<Concept>. Его подпись определяет, как обрабатываются аргументы<call>. Если же<placeholder>, то<call>ожидает<any>, используя<placeholder>. При этом<any>,<call>. Тип, который он хранит, должен быть того же типа, указанного<binding>. Любые аргументы, которые не являются держателями подписи<Op>, передаются без изменений.
Если<binding>не указано, это будет выведено из аргументов. Естественно, для этого требуется хотя бы один аргумент<any>. В этом случае все<any>аргументы должны быть одинаковыми<binding>.
Пример:
typedef mpl::vector<
  copy_constructible<_b>,
  addable<_a, int, _b> > concept;
any<concept, _a> a = ...;
any<concept, _b> b(call(addable<_a, int, _b>(), a, 10));
Подпись<addable>является<_b(const _a&, const int&)>.
| Возвращение: | Результат операции. В случае, если тип результата подписи<Op>является заполнителем, результат будет преобразован в соответствующийлюбойтип. | 
| Броски: | bad_function_call, еслиrelaxedнаходится в< Concept>и есть несоответствие типа. |