delctype
support dans C++ 0x rend ce assez trivial à mettre en œuvre:
template<template <typename> class Parent, typename Param1>
Param1 get_type(Parent<Param1> const &input) { return Param1(); }
SomeTpl<int> some_obj;
delctype(get_type(some_obj)) x;
(Même si vous avez besoin d'une définition de get_type séparée pour les modèles avec 2, 3, 4, paramètres, etc. Malheureusement, je ne pense pas qu'il existe un moyen de le faire sans decltype, car pour cela, il faut automatique la déduction de type fournie par les modèles de fonction (qui n'est pas disponible pour les modèles de classe) et donc il n'y a pas le moyen de faire un typedef de cette façon. Je ne sais pas si Boost a quelque chose comme ça déjà, mais si elles le font, il faudra toujours votre compilateur pour soutenir decltype
, mais depuis decltype est si nouveau, il n'y a pas beaucoup de choses dans boost que l'utilise encore (bien qu'il y en ait).
Qu'est-ce que 'T'? _____ – kennytm
@Ken désolé, je clarifie peu bit – Anycorn
Pour la technique générale C++ pour faire cela, il ya une question ici: http://stackoverflow.com/questions/301203/extract-c-template-parameters. Je sais que ce n'est pas une dupe car cela demande une émulation de boost, mais pour toute personne intéressée ... –