C++11-Code nach C++03 umschreiben
-
Hi, wie kann ich den folgenden Code in C++03 formulieren?
template<typename integral_t, typename = typename std::enable_if<std::is_integral<integral_t>::value>::type> bool f(integral_t value) { ... }Ich brauche das weil ich den Code auf einem alten Compiler zum Laufen bringen muss.
Bisher hab ich:template<bool condition, typename t = void> struct enable_if; template<typename t> struct enable_if<true, t> { typedef t type; }; template<typename lhs, typename rhs> struct same { static const bool value = false; }; template<typename t> struct same<t, t> { static const bool value = true; }; template<typename t> struct is_integral { static const bool value = same<t, bool>::value || ... ; };Wie ich das aber so in den Code der Funktion bauen soll ist mir schleierhaft.
-
template<typename T> typename std::enable_if<std::is_integral<T>::value, bool>::type f(T value); // oder template<typename T> bool f(T value, typename std::enable_if<std::is_integral<T>::value>::type* = 0);Ersteres ist nach Möglichkeit vorzuziehen, Letzteres ist die einzige Möglichkeit bei Konstruktoren.
-
Danke.
