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