No hace falta explicar más. El código siguiente es evidente:Cómo enlazar un constructor en C++?
struct X
{
X(int n){}
};
int main()
{
std::vector<int> src;
std::vector<X> dest;
// Below is not valid in current C++, but that is just what I want.
transform(src.begin(), src.end(), back_insert(dest), std::bind(&X::X, _1));
}
Un constructor toma algunos argumentos y devuelve un objeto de la clase del constructor.
Un constructor parece una función, actúa como una función y es exactamente una función.
Por lo tanto, creo que std :: bind debe tratar uniformemente los constructores y otros objetos invocables.
Sin embargo, ¿cómo puedo extender la plantilla de función "vincular" para implementar eso?
Un constructor parece una función sin un tipo de retorno y con alguna sintaxis especial (inicializador de ctor), actúa como una función, pero no es exactamente una función. –
Un constructor es una función, ese no es el problema. El problema es obtener una función _pointer_ para ello. '& X :: X' simplemente no es una expresión válida. – MSalters
[Usando boost :: bind con un constructor] (http://stackoverflow.com/q/1335301/511601) –