20 lines
639 B
C++
20 lines
639 B
C++
#include <cassert>
|
|
#include <string>
|
|
|
|
using namespace std::string_literals;
|
|
|
|
template <typename T> auto sum(T final) { return final; }
|
|
template <typename T, typename... Ts> auto sum(T first, Ts... rem) {
|
|
return first + sum<Ts...>(rem...);
|
|
}
|
|
int main(void) {
|
|
bool dummy = sum<double, int, int, int>(1.5, 2, 3, 10) == 16.5;
|
|
assert(dummy);
|
|
dummy = sum<int, int, int, int, int, int, int>(1, 5, 7, 8, 2, 3, 4) == 30;
|
|
assert(dummy);
|
|
dummy = sum<double>(1.5, 1, 2, 3.5) == 8.0;
|
|
assert(dummy);
|
|
dummy = sum<std::string>("asdf"s, "abcdefghijklmnop"s, "qrstuvwxyz"s) ==
|
|
"asdfabcdefghijklmnopqrstuvwxyz"s;
|
|
assert(dummy);
|
|
}
|