Chris@16
|
1 // ----------------------------------------------------------------------------
|
Chris@16
|
2 // msvc_disambiguater.hpp : msvc workarounds. (for put_{head|last} overloads)
|
Chris@16
|
3 // the trick was described in boost's list by Aleksey Gurtovoy
|
Chris@16
|
4 // ----------------------------------------------------------------------------
|
Chris@16
|
5
|
Chris@16
|
6 // Copyright Samuel Krempp 2003. Use, modification, and distribution are
|
Chris@16
|
7 // subject to the Boost Software License, Version 1.0. (See accompanying
|
Chris@16
|
8 // file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
|
Chris@16
|
9
|
Chris@16
|
10 // see http://www.boost.org/libs/format for library home page
|
Chris@16
|
11
|
Chris@16
|
12 // ----------------------------------------------------------------------------
|
Chris@16
|
13
|
Chris@16
|
14 #ifndef BOOST_MSVC_DISAMBIGUATER_HPP
|
Chris@16
|
15 #define BOOST_MSVC_DISAMBIGUATER_HPP
|
Chris@16
|
16
|
Chris@101
|
17 #if BOOST_WORKAROUND(__DECCXX_VER, BOOST_TESTED_AT(60590042))
|
Chris@16
|
18
|
Chris@16
|
19 #include <boost/format/group.hpp>
|
Chris@16
|
20 #include <ostream>
|
Chris@16
|
21
|
Chris@16
|
22 namespace boost {
|
Chris@16
|
23 namespace io {
|
Chris@16
|
24 namespace detail {
|
Chris@16
|
25
|
Chris@16
|
26 template< class Ch, class Tr, class T >
|
Chris@16
|
27 struct disambiguater
|
Chris@16
|
28 {
|
Chris@16
|
29 template< typename U >
|
Chris@16
|
30 static void put_head(BOOST_IO_STD basic_ostream<Ch, Tr>& os, group1<U> const& x, long)
|
Chris@16
|
31 {
|
Chris@16
|
32 os << group_head(x.a1_);
|
Chris@16
|
33 }
|
Chris@16
|
34 static void put_head(BOOST_IO_STD basic_ostream<Ch, Tr>& os, T const& x, int)
|
Chris@16
|
35 {
|
Chris@16
|
36 }
|
Chris@16
|
37 template< typename U >
|
Chris@16
|
38 static void put_last(BOOST_IO_STD basic_ostream<Ch, Tr>& os, group1<U> const& x, long)
|
Chris@16
|
39 {
|
Chris@16
|
40 os << group_last(x.a1_);
|
Chris@16
|
41 }
|
Chris@16
|
42 static void put_last(BOOST_IO_STD basic_ostream<Ch, Tr>& os, T const& x, int)
|
Chris@16
|
43 {
|
Chris@16
|
44 os << x;
|
Chris@16
|
45 }
|
Chris@16
|
46 };
|
Chris@16
|
47
|
Chris@16
|
48 } // namespace detail
|
Chris@16
|
49 } // namespace io
|
Chris@16
|
50 } // namespace boost
|
Chris@16
|
51
|
Chris@101
|
52 #endif // -__DECCXX_VER
|
Chris@16
|
53
|
Chris@16
|
54 #endif // -BOOST_MSVC_DISAMBIGUATER_HPP
|