Chris@16: //Copyright (c) 2006-2009 Emil Dotchevski and Reverge Studios, Inc. Chris@16: Chris@16: //Distributed under the Boost Software License, Version 1.0. (See accompanying Chris@16: //file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) Chris@16: Chris@16: #ifndef UUID_63EE924290FB11DC87BB856555D89593 Chris@16: #define UUID_63EE924290FB11DC87BB856555D89593 Chris@16: #if (__GNUC__*100+__GNUC_MINOR__>301) && !defined(BOOST_EXCEPTION_ENABLE_WARNINGS) Chris@16: #pragma GCC system_header Chris@16: #endif Chris@16: #if defined(_MSC_VER) && !defined(BOOST_EXCEPTION_ENABLE_WARNINGS) Chris@16: #pragma warning(push,1) Chris@16: #endif Chris@16: Chris@16: #include Chris@16: #include Chris@16: Chris@16: namespace Chris@16: boost Chris@16: { Chris@16: template < Chris@16: class E > Chris@16: inline Chris@16: E const & Chris@16: operator<<( Chris@16: E const & x, Chris@16: tuple< > const & v ) Chris@16: { Chris@16: return x; Chris@16: } Chris@16: Chris@16: template < Chris@16: class E, Chris@16: class Tag1,class T1 > Chris@16: inline Chris@16: E const & Chris@16: operator<<( Chris@16: E const & x, Chris@16: tuple< Chris@16: error_info > const & v ) Chris@16: { Chris@16: return x << v.template get<0>(); Chris@16: } Chris@16: Chris@16: template < Chris@16: class E, Chris@16: class Tag1,class T1, Chris@16: class Tag2,class T2 > Chris@16: inline Chris@16: E const & Chris@16: operator<<( Chris@16: E const & x, Chris@16: tuple< Chris@16: error_info, Chris@16: error_info > const & v ) Chris@16: { Chris@16: return x << v.template get<0>() << v.template get<1>(); Chris@16: } Chris@16: Chris@16: template < Chris@16: class E, Chris@16: class Tag1,class T1, Chris@16: class Tag2,class T2, Chris@16: class Tag3,class T3 > Chris@16: inline Chris@16: E const & Chris@16: operator<<( Chris@16: E const & x, Chris@16: tuple< Chris@16: error_info, Chris@16: error_info, Chris@16: error_info > const & v ) Chris@16: { Chris@16: return x << v.template get<0>() << v.template get<1>() << v.template get<2>(); Chris@16: } Chris@16: Chris@16: template < Chris@16: class E, Chris@16: class Tag1,class T1, Chris@16: class Tag2,class T2, Chris@16: class Tag3,class T3, Chris@16: class Tag4,class T4 > Chris@16: inline Chris@16: E const & Chris@16: operator<<( Chris@16: E const & x, Chris@16: tuple< Chris@16: error_info, Chris@16: error_info, Chris@16: error_info, Chris@16: error_info > const & v ) Chris@16: { Chris@16: return x << v.template get<0>() << v.template get<1>() << v.template get<2>() << v.template get<3>(); Chris@16: } Chris@16: } Chris@16: Chris@16: #if defined(_MSC_VER) && !defined(BOOST_EXCEPTION_ENABLE_WARNINGS) Chris@16: #pragma warning(pop) Chris@16: #endif Chris@16: #endif