...
| Code Block | ||||
|---|---|---|---|---|
| ||||
#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.
...