#include <iostream>
#include <list>
#include <type_traits>
#include <vector>
template <typename T, std::enable_if_t<std::is_arithmetic<T>::value, int> = 0>
T Sum(T inputNumber)
{
return inputNumber;
}
template<class Container, typename = typename Container::value_type>
long double Sum(const Container &inputArray)
{
long double sumResult = 0.0;
for (auto& element : inputArray)
{
sumResult += Sum(element);
}
return sumResult;
}
int main(){
const std::vector<long double> testVector1 = {1,1,1};
std::cout << Sum(testVector1) << "\n";
const auto testVector2 = {testVector1, testVector1, testVector1};
std::cout << Sum(testVector2) << "\n";
std::list<std::remove_cv_t<decltype(testVector2)>> testVector3 = {testVector2, testVector2, testVector2};
std::cout << Sum(testVector3) << "\n";
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8bGlzdD4KI2luY2x1ZGUgPHR5cGVfdHJhaXRzPgojaW5jbHVkZSA8dmVjdG9yPgoKdGVtcGxhdGUgPHR5cGVuYW1lIFQsIHN0ZDo6ZW5hYmxlX2lmX3Q8c3RkOjppc19hcml0aG1ldGljPFQ+Ojp2YWx1ZSwgaW50PiA9IDA+ClQgU3VtKFQgaW5wdXROdW1iZXIpCnsKICAgIHJldHVybiBpbnB1dE51bWJlcjsKfQoKdGVtcGxhdGU8Y2xhc3MgQ29udGFpbmVyLCB0eXBlbmFtZSA9IHR5cGVuYW1lIENvbnRhaW5lcjo6dmFsdWVfdHlwZT4KbG9uZyBkb3VibGUgU3VtKGNvbnN0IENvbnRhaW5lciAmaW5wdXRBcnJheSkKewogICAgbG9uZyBkb3VibGUgc3VtUmVzdWx0ID0gMC4wOwogICAgZm9yIChhdXRvJiBlbGVtZW50IDogaW5wdXRBcnJheSkKICAgIHsKICAgICAgICBzdW1SZXN1bHQgKz0gU3VtKGVsZW1lbnQpOwogICAgfQogICAgcmV0dXJuIHN1bVJlc3VsdDsKfQoKaW50IG1haW4oKXsKICAgIGNvbnN0IHN0ZDo6dmVjdG9yPGxvbmcgZG91YmxlPiB0ZXN0VmVjdG9yMSA9IHsxLDEsMX07CiAgICBzdGQ6OmNvdXQgPDwgU3VtKHRlc3RWZWN0b3IxKSA8PCAiXG4iOwoKICAgIGNvbnN0IGF1dG8gdGVzdFZlY3RvcjIgPSB7dGVzdFZlY3RvcjEsIHRlc3RWZWN0b3IxLCB0ZXN0VmVjdG9yMX07CiAgICBzdGQ6OmNvdXQgPDwgU3VtKHRlc3RWZWN0b3IyKSA8PCAiXG4iOwoKCXN0ZDo6bGlzdDxzdGQ6OnJlbW92ZV9jdl90PGRlY2x0eXBlKHRlc3RWZWN0b3IyKT4+IHRlc3RWZWN0b3IzID0ge3Rlc3RWZWN0b3IyLCB0ZXN0VmVjdG9yMiwgdGVzdFZlY3RvcjJ9OwoKICAgIHN0ZDo6Y291dCA8PCBTdW0odGVzdFZlY3RvcjMpIDw8ICJcbiI7Cn0=