--
Aurélien REGAT-BARREL
> est-il possible de créer un alias sur une classe template, comme typedef ?
> En l'occurrence je voudrais faire quelque chose comme :
> typedef boost::shared_ptr SmartPtr;
> Il y aurait bien
> #define SmartPtr boost::shared_ptr
> mais je préfère éviter ce genre de choses.
Eh oui, pas de typedef templates :-(
Parfois quelque chose comme ceci fait l'affaire :
template <typename T> struct SmartPtr {
typedef boost::shared_ptr<T> le_type;
};
Mais ça t'oblige à utiliser SmartPtr<T>::le_type ce qui est plus lourd
que SmartPtr<T> tout court.
D'autres fois tu préféreras :
template <typename T> struct SmartPtr: boost::shared_ptr<T> {};
Mais cette dernière solution a un tas de défauts (je n'ai pas regardé le
code de boost::shared_ptr, mais je doute qu'il se prête bien à ceci).
:-(
> Parfois quelque chose comme ceci fait l'affaire :
> template <typename T> struct SmartPtr {
> typedef boost::shared_ptr<T> le_type;
> };
>
> Mais ça t'oblige à utiliser SmartPtr<T>::le_type ce qui est plus lourd
> que SmartPtr<T> tout court.
Ca ne me plait pas trop...
> D'autres fois tu préféreras :
> template <typename T> struct SmartPtr: boost::shared_ptr<T> {};
>
> Mais cette dernière solution a un tas de défauts (je n'ai pas regardé le
> code de boost::shared_ptr, mais je doute qu'il se prête bien à ceci).
Oui, c'est trop risqué. Même si ça marche avec boost, le but est de pouvoir
remplacer par une autre classe sans souci, hors là c'est pas sans soucis.
Bon ben tant pis, pas d'alias alors.
Merci.
--
Aurélien REGAT-BARREL
> est-il possible de créer un alias sur une classe template, comme
> typedef ?
Non. Pas encore. Cfr.
<URL:http://www.open-std.org/JTC1/SC22/WG21/docs/papers/2002/n1406.pdf>.
> typedef boost::shared_ptr SmartPtr;
Tu peux faire quelque chose comme (inspiré du document cité) :
template< typename T >
struct SmartPtr
{
typedef boost::shared_ptr< T > Type ;
} ;
SmartPtr< int >::Type my_pointer ;
Il me semble que c'est une fonctionalité qui a souvent été pointée
comme manquante. Je ne vois pas, avec le peu de connaissance que j'ai
sur le sujet, de problème majeur à son implémentation. C'est ce que
semble dire Sutter en fin de document. J'imagine qu'elle a de grande
chance d'être ajoutée au standard.
Quelqu'un a-t-il quelque info plus fiable là-dessus ?
--drkm
[...]
| Il me semble que c'est une fonctionalité qui a souvent été pointée
| comme manquante. Je ne vois pas, avec le peu de connaissance que j'ai
| sur le sujet, de problème majeur à son implémentation. C'est ce que
| semble dire Sutter en fin de document. J'imagine qu'elle a de grande
| chance d'être ajoutée au standard.
|
| Quelqu'un a-t-il quelque info plus fiable là-dessus ?
http://www.open-std.org/JTC1/SC22/WG21/docs/papers/2003/n1449.pdf
http://www.open-std.org/JTC1/SC22/WG21/docs/papers/2003/n1489.pdf
-- Gaby