Deux bonnes réponses, un de plus: une autre approche serait d'essayer de tirer parti de la type de système dans la mesure du possible, et de créer des typedefs. Par exemple, à l'aide de favoriser une forte typedef (http://www.boost.org/doc/libs/1_61_0/libs/serialization/doc/strong_typedef.html).
BOOST_STRONG_TYPEDEF(int , num_buffers);
BOOST_STRONG_TYPEDEF(int , num_pages);
void func(num_buffers b, num_pages p);
L'appel de la touche func avec des arguments dans le mauvais ordre maintenant serait une erreur de compilation.
Un couple de notes sur ce. Tout d'abord, de boost forte typedef est plutôt daté dans son approche; vous pouvez faire beaucoup plus agréable des choses avec variadic PFI et éviter les macros complètement. Deuxièmement, évidemment, cela présente une surcharge, que vous avez souvent de convertir explicitement. Donc, en général, vous ne voulez pas en abuser. C'est vraiment sympa pour des choses qui reviennent encore et encore dans votre bibliothèque. Pas très bon pour les choses qui viennent comme une. Ainsi, par exemple, si vous écrivez un GPS de la bibliothèque, vous devez avoir un bon double typedef pour les distances en mètres, une forte int64 typedef pour le temps passé à l'époque, en nanosecondes, et ainsi de suite.