online compiler and debugger for c/c++

code. compile. run. debug. share.
Source Code   
Language
#include <iostream> #include <vector> namespace details { template<typename type_t, typename arg_t, typename... args_t> auto make_spread_impl(std::vector<type_t>& values, const arg_t& arg, const args_t&... args) { // check if template argument is a value or a std::vector of values. if constexpr (std::is_same_v<arg_t, type_t>) { // single value values.push_back(arg); } else { // vector of values static_assert(std::is_same_v<std::vector<type_t>, arg_t>); // append values to end values.insert(values.end(), arg.begin(), arg.end()); } // continue recursion if constexpr (sizeof...(args_t) > 0) { return make_spread_impl(values, args...); } // recursion end condition return values; } } template<typename type_t, typename... args_t> auto make_spread(const args_t&... args) { // one argument return a vector of values. if constexpr (sizeof...(args) == 1ul) { return std::vector<type_t>{args...}; } // otherwise recurse std::vector<type_t> values; details::make_spread_impl(values, args...); return values; } int main() { std::vector<int> v1{ 1,2,3 }; std::vector<int> v2{ 5,6,7 }; auto result = make_spread<int>(v1, 4, v2, 8); for (const auto& value : result) { std::cout << value << " "; } return 0; }

Compiling Program...

Command line arguments:
Standard Input: Interactive Console Text

                

                

Program is not being debugged. Click "Debug" button to start program in debug mode.

#FunctionFile:Line
VariableValue
RegisterValue
ExpressionValue