2010-08-07 3 views
0

Je veux transformer un vecteur de type T à un type de vectorof K. J'ai essayé, mais ça ne fonctionne pas:en utilisant static_cast avec boost :: bind

transform(vec.rbegin(),vec.rend(),vecNew.begin(),boost::bind(static_cast<K>(),_1)); 

Je reçois l'erreur: " expression primaire attendue avant ')' jeton ". Qu'est-ce que je fais mal?

Répondre

4

Utilisez le foncteur cast boost ll_static_cast<K>()

+1

Vous pourriez dire qu'il devrait être utilisé car static_cast est un opérateur, comme sizeof, et non une fonction. – Omnifarious

1

Il n'y a pas besoin de la distribution statique à moins qu'il n'y a pas de conversion implicite de T à K. Si le constructeur de conversion n'est pas explicite, ou si vous T :: operator K (), vous pouvez simplement faire:

transform(vec.rbegin(),vec.rend(),vecNew.begin()); 

Notez que cela inverse également l'ordre des éléments.

Questions connexes