URL: https://linuxfr.org/users/serge_ss_paille/journaux/c-hell-heaven-et-les-concepts Title: C++ Hell/Heaven et les concepts Authors: serge_sans_paille Date: 2020年09月17日T14:05:55+02:00 License: CC By-SA Tags: c++11 et c++ Score: 11 Salut à tous, C++20 apporte les [concepts](https://en.cppreference.com/w/cpp/language/constraints), mais par pure nostalgie, regardons comment émuler ça en C++11 ```c++ #include #define REQUIRES(x) class _ = decltype(x) template()==0), T(1), std::declval() * (std::declval() -1)))> T fact(T const& n) { return n == 0 ? T(1) : n * fact(n -1); } auto x = fact(3); // auto y = fact("er"); ``` Dans le ``REQUIRES``, on fout juste les expressions qu'on souhaite être valides pour note fonction, et hop, si une ds expressions est non valide, on a un message d'erreur et la fonction sera ignorée lors de la recherche des surcharges possibles de la fonction. Note : petit code sans prétention, faillible a plein d'égards, mais pas moins amusant

AltStyle によって変換されたページ (->オリジナル) /