- #include <iostream> 
- #include <string> 
- #include <type_traits> 
- #include <utility> 
-   
- using namespace std; 
-   
- template <typename T> T sum(T && x) 
- { 
-     return std::forward<T>(x); 
- } 
-   
- template <typename T, typename ...Args> 
- typename std::common_type<T, Args...>::type sum(T && x, Args &&... args) 
- { 
-     return std::forward<T>(x) + sum(std::forward<Args>(args)...); 
- } 
-   
- int main() 
- { 
-     auto y = sum(1, 2, 4.5); // OK 
-     cout << y << endl; 
-   
-     auto x = sum(std::string("Hello!"), "World"); // OK 
-     cout << x << endl; 
-   
-     return 0; 
- } 
				I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8c3RyaW5nPgojaW5jbHVkZSA8dHlwZV90cmFpdHM+CiNpbmNsdWRlIDx1dGlsaXR5PgoKdXNpbmcgbmFtZXNwYWNlIHN0ZDsKCnRlbXBsYXRlIDx0eXBlbmFtZSBUPiBUIHN1bShUICYmIHgpCnsKICAgIHJldHVybiBzdGQ6OmZvcndhcmQ8VD4oeCk7Cn0KCnRlbXBsYXRlIDx0eXBlbmFtZSBULCB0eXBlbmFtZSAuLi5BcmdzPgp0eXBlbmFtZSBzdGQ6OmNvbW1vbl90eXBlPFQsIEFyZ3MuLi4+Ojp0eXBlIHN1bShUICYmIHgsIEFyZ3MgJiYuLi4gYXJncykKewogICAgcmV0dXJuIHN0ZDo6Zm9yd2FyZDxUPih4KSArIHN1bShzdGQ6OmZvcndhcmQ8QXJncz4oYXJncykuLi4pOwp9CgppbnQgbWFpbigpCnsKICAgIGF1dG8geSA9IHN1bSgxLCAyLCA0LjUpOyAvLyBPSwogICAgY291dCA8PCB5IDw8IGVuZGw7CgogICAgYXV0byB4ID0gc3VtKHN0ZDo6c3RyaW5nKCJIZWxsbyEiKSwgIldvcmxkIik7IC8vIE9LCiAgICBjb3V0IDw8IHggPDwgZW5kbDsKCiAgICByZXR1cm4gMDsKfQ==