Est-il possible de spécifier un vide std::vector en tant que paramètre par défaut?

J'ai lu à travers cette question similaire et je me trouve de moins que satisfaite des réponses. Je n'ai pas une simple fonction qui s'appelle "toto"; j'ai beaucoup plus de fonction complexe qui a des dangers très réels que si les paramètres ne sont pas fournis de manière judicieuse. Il me semble préférable pour la fonction à appliquer ses propres règles et s'assurer de la robustesse du système qu'à se pencher vers les subtilités sémantiques qui insistent sur le "une fonction, une seule chose à faire". Je pense que le favorisé les réponses données à cette question reflètent la programmation de l'idéalisme prises de trop loin, pas la réalité de certaines situations.

Ce que je dois faire face est:

void DoSomethingVeryComplex( const CRect bounds, CPoint startPoint = CPoint(-1,-1) );

Maintenant ce qui se passe à satisfaire la sémantique des règles, il est en train de faire quelque chose, pas plusieurs choses. La seule chose qu'il est en train de faire se trouve être complexe, et en plusieurs étapes, mais il est encore une chose.

Pour cette chose complexe, il est recommandé à l'utilisateur de fournir les limites, et de laisser la fonction de déterminer son propre point de départ. Les utilisateurs avancés peuvent vouloir faire de l'considérables de maths pour déterminer une solution de rechange point de départ et de l'offre... mais méfiez-vous des utilisateurs.

Et maintenant je viens de voir que dans de rares occasions, il est judicieux de fournir non pas un, mais plusieurs points de départ. Cela ne change rien dans la sémantique du concept du processus, parce que le processus en est un qui se propage d'un point à l'voisins, les voisins des voisins, et ainsi de suite. Donc à partir de nombreux points, est une extension naturelle.

En conséquence, je préfère préciser:

void DoSomethingVeryComplex( const CRect bounds,
                             const std::vector<CPoint> startPoint /* = empty" */ );

de sorte que si le vecteur est vide, la fonction détermine le point de départ comme avant, et si il y a des points dans le vecteur, elles sont utilisées comme point de départ(s).

Est-il une syntaxe C++ disponibles, ce qui me permet de faire cela - pour spécifier un tableau vide en tant que paramètre par défaut?

OriginalL'auteur omatai | 2012-05-15