2 // Boost general library 'format' ---------------------------
3 // See http://www.boost.org for updates, documentation, and revision history.
5 // (C) Samuel Krempp 2001
6 // krempp@crans.ens-cachan.fr
7 // Permission to copy, use, modify, sell and
8 // distribute this software is granted provided this copyright notice appears
9 // in all copies. This software is provided "as is" without express or implied
10 // warranty, and with no claim as to its suitability for any purpose.
12 // ideas taken from RĂ¼diger Loos's format class
13 // and Karl Nelson's ofstream
15 // ----------------------------------------------------------------------------
16 // msvc_disambiguater.hpp : msvc workarounds. (for put_{head|last} overloads)
17 // the trick was described in boost's list by Aleksey Gurtovoy
18 // ----------------------------------------------------------------------------
21 #ifndef BOOST_MSVC_DISAMBIGUATER_HPP
22 #define BOOST_MSVC_DISAMBIGUATER_HPP
24 #if BOOST_WORKAROUND( BOOST_MSVC, <= 1300) // this whole header is specifically for msvc
26 #include <boost/format/group.hpp>
33 template< class Ch, class Tr, class T >
36 template< typename U >
37 static void put_head(BOOST_IO_STD basic_ostream<Ch, Tr>& os, group1<U> const& x, long)
39 os << group_head(x.a1_);
41 static void put_head(BOOST_IO_STD basic_ostream<Ch, Tr>& os, T const& x, int)
44 template< typename U >
45 static void put_last(BOOST_IO_STD basic_ostream<Ch, Tr>& os, group1<U> const& x, long)
47 os << group_last(x.a1_);
49 static void put_last(BOOST_IO_STD basic_ostream<Ch, Tr>& os, T const& x, int)
61 #endif // -BOOST_MSVC_DISAMBIGUATER_HPP