Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

Code Block
bgColor#ccccff
langcpp
#include <type_traits>
 
template <typename Arg, typename std::enable_if<std::is_integral<Arg>::value>::type * = nullptr>
int Add(Arg F, Arg S) { return F + S; }
 
template <typename Arg, typename... Ts, typename std::enable_if<std::is_integral<Arg>::value>::type * = nullptr>
int Add(Arg F, Ts... Rest) {
  return F + Add(Rest...);
}

Note , that this compliant solution makes use of std::enable_if to ensure that any nonintegral argument values result non-integer argument value results in an ill-formed program.

...