2009-08-14 18 views

Respuesta

15

phoenix::bind es como lambda::bind una función que devuelve una plantilla de expresión que registra que tiene que llamar a la función dada. Estos están diseñados para trabajar junto con Phoenix y Lambda, respectivamente. Como resultado, contienen muchas más cosas. Por ejemplo, el tipo que devuelven sobrecarga a todos los operadores posibles para que su acción respectiva pueda grabarse y ejecutarse más tarde.

boost::bind es "solo" una carpeta. Vinculará la función y devolverá un tipo que tenga el operador de llamada de función sobrecargado, y no mucho más.

+2

Vale la pena señalar que en [Phoenix 3.0] (http://www.boost.org/doc/libs/1_47_0/libs/phoenix/doc/html/index.html) (lanzado en impulso 1.47), 'phoenix :: bind' es [compatible] (http://www.boost.org/doc/libs/1_47_0/libs/phoenix/doc/html/phoenix/modules/bind/compatibility_with_boost_bind.html) con 'boost :: bind' . Teniendo en cuenta la respuesta de litb aquí, esto significa que podrías usar 'phoenix :: bind' en lugares donde previamente usaste' boost :: bind', pero no creo que funcione al revés (no puedes usar 'boost :: bind' dentro de una lambda y esperamos que funcione igual que' phoenix :: bind'). –

Cuestiones relacionadas