Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <string>
- #include <sstream>
- template <typename S>
- void concat(std::ostringstream& ss, S&& separator)
- {
- }
- template <typename S, typename H, typename... T>
- void concat(std::ostringstream& ss, S&& separator, H&& h, T&&... t)
- {
- ss << separator << std::forward<H>(h);
- concat(ss, std::forward<S>(separator), std::forward<T>(t)...);
- }
- template <typename S>
- std::string concat(S&& separator)
- {
- return std::string();
- }
- template <typename S, typename H, typename... T>
- std::string concat(S&& separator, H&& h, T&&... t)
- {
- std::ostringstream oss;
- oss << std::forward<H>(h);
- concat(oss, std::forward<S>(separator), std::forward<T>(t)...);
- return oss.str();
- }
- #include <iostream> // for std::cout
- int main()
- {
- {
- unsigned long long u = -1;
- long long i = -1;
- char c = 100;
- std::string s = "asd";
- std::string const k = "a d";
- std::cout << concat(' ', 123, k, s, i, u, c) << std::endl;
- std::cout << concat(", ", 123, k, std::string("t"), s, i, u, c) << std::endl;
- std::cout << concat(",") << std::endl;
- std::cout << concat("", 123, k, s, i, u, c) << std::endl;
- std::cout << concat(k, 123, k, s, i, u, c) << std::endl;
- return 0;
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement