online compiler and debugger for c/c++

code. compile. run. debug. share.
Source Code    Language
#include<vector> #include <iostream> namespace algorithms { /*! * \brief Wraps incoming element and move/or copy the elements from one to another. * \example return (wrapped_plus(container) + ...).value */ template <class T> struct wrapped_plus { using value_type = T; value_type value; wrapped_plus(value_type&& in) : value(std::move(in)) {} wrapped_plus(const value_type& in) : value(in) {} wrapped_plus operator+(const wrapped_plus& in) { std::copy(std::begin(in.value), std::end(in.value), std::back_inserter(value)); return *this; } wrapped_plus operator+(wrapped_plus&& in) { std::move(std::make_move_iterator(std::begin(in.value)), std::make_move_iterator(std::end(in.value)), std::back_inserter(value)); return *this; } }; /*! * \brief Merge 2 or more STL containers with same type. * \example merge(container,container,container) */ template <typename... Containers> static inline auto merge(Containers&&... c) { return (wrapped_plus(c) + ...).value; } } // namespace algorithms // Print out the vector void print(const std::vector<int>& v){ std::cout << "v = { "; for (int n : v) std::cout << n << ", "; std::cout << "}; \n"; }; int main(int argc, char** argv) { std::vector<int> dest{1,2,3,4,5}; std::vector<int> src{6,7,8,9,10}; auto result = algorithms::merge(dest,src); print(result); 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