Déduction template mystérieuse
Hello,
Ne lire la suite que si vous souhaitez mettre au défi votre sagacité concernant les templates.
Je suis en train d'étudier Boost::Interprocess, notamment managed_shared_memory dans interprocess_fwd.hpp :
Code:
1 2 3 4 5 6 7 8 9 10
| template <class CharType
,class MemoryAlgorithm
,template<class IndexConfig> class IndexType>
class basic_managed_shared_memory;
typedef basic_managed_shared_memory
<char
,rbtree_best_fit<mutex_family>
,iset_index>
managed_shared_memory; |
Le dernier argument template, iset_index, est un type a priori incomplet, puisqu'il est lui-même un argument template template, et qu'on ne donne pas son argument template.
Toutefois, la valeur de cet argument template semble déduite, puisqu'on peut instancier managed_shared_memory. Mais après avoir fouillé, je n'arrive pas à trouver comment.
Si vous avez le sens du défi, je vous propose de relever le gant (il est évident que ce que je fournis ici ne permet pas d'avoir la solution ; il faut aller dans les sources de Boost 1.52.0).