#include <memory>


//  동적 순차 컨테이너( vector, deque, list ) 의 template parameter

#define CONTAINER_( some_type, elem_type ) template< class, class > class some_type, class elem_type


//  동적 순차 컨테이너의 function parameter

#define CONTAINER( some_type, elem_type )  some_type< elem_type, std::allocator< elem_type > >


template< CONTAINER_( L, LE ), CONTAINER_( R, RE ) >

inline  auto&   operator+=( CONTAINER( L, LE )& tot, const CONTAINER( R, RE )& some )

{

    for( auto one : some )

        tot.emplace_back( LE( one ) );

    return  tot;

}


#include <vector>

#include <list>

#include <deque>


std::vector< double >   a{ 1, 2, 3 };

std::deque< char >      b{ 4, 5, 6, 7 };

std::list< int >        c{ 8, 9 };


#include <iostream>

using   namespace   std;


int main()

{

    a += b += c;

    for( auto v : a )

        cout << v;

    return  0;

}


출력 :

123456789