J'ai un tas de fonctions surchargées qui fonctionnent sur certains types de données tels que int, double et chaînes. La plupart de ces fonctions effectuent la même action, où seul un ensemble spécifique de types de données est autorisé. Cela signifie que je ne peux pas créer une simple fonction de modèle générique car je perds la sécurité de type (et potentiellement un problème d'exécution pour la validation au sein de la fonction).Fonction semi-générique
Est-il possible de créer une "fonction de sécurité de type temps de compilation semi-générique"? Si c'est le cas, comment? Sinon, est-ce quelque chose qui apparaîtra en C++ 0x?
Une idée (non valide);
template <typename T, restrict: int, std::string >
void foo(T bar);
...
foo((int)0); // OK
foo((std::string)"foobar"); // OK
foo((double)0.0); // Compile Error
Note: Je me rends compte que je pouvais créer une classe qui a surchargé les constructeurs et les opérateurs d'affectation et de transmettre une variable de cette classe plutôt à la fonction.
Je pense que l'hypothèse que vous n'avez la sécurité de type sans restriction est quelque peu suspecte. En outre, les types ne sont définitivement pas vérifiés lors de l'exécution. – UncleBens
UncleBens: Il n'y a "aucune sécurité de type" dans la mesure où l'exemple ci-dessus pour les doubles serait compiler. –