Eviter un const_cast dans un foncteur
J'ai un pb tres simple, je veux tranformer un const vector<T> en un vector<T*>.
Voici un extrait de mon code qui le fait :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
| template<typename T>
struct ToPtr : public std::unary_function<T, T*>
{
T* operator()(const T& value)
{
return const_cast<T*>(&value);
}
};
template<typename T>
void MyClass::order(const vector<T>& in,
vector<T*>& out) const
{
out.reserve(in.size());
std::transform(in.begin(),
in.end(),
std::back_inserter(out),
ToPtr<T>());
} |
Ce code marche tres bien mais ce qui me gene c'est le const_cast dans le foncteur. Est - ce qu'il existe une meilleure conception pour convertir un const vector<T> en vector<T*> ?