CodeMover prototype
[dyninst.git] / external / boost / exception / detail / is_output_streamable.hpp
1 //Copyright (c) 2006-2008 Emil Dotchevski and Reverge Studios, Inc.\r
2 \r
3 //Distributed under the Boost Software License, Version 1.0. (See accompanying\r
4 //file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)\r
5 \r
6 #ifndef UUID_898984B4076411DD973EDFA055D89593\r
7 #define UUID_898984B4076411DD973EDFA055D89593\r
8 \r
9 #include <ostream>\r
10 \r
11 namespace\r
12 boost\r
13     {\r
14     namespace\r
15     to_string_detail\r
16         {\r
17         template <class T,class CharT,class Traits>\r
18         char operator<<( std::basic_ostream<CharT,Traits> &, T const & );\r
19 \r
20         template <class T,class CharT,class Traits>\r
21         struct\r
22         is_output_streamable_impl\r
23             {\r
24             static std::basic_ostream<CharT,Traits> & f();\r
25             static T const & g();\r
26             enum e { value=1!=(sizeof(f()<<g())) };\r
27             };\r
28         }\r
29 \r
30     template <class T, class CharT=char, class Traits=std::char_traits<CharT> >\r
31     struct\r
32     is_output_streamable\r
33         {\r
34         enum e { value=to_string_detail::is_output_streamable_impl<T,CharT,Traits>::value };\r
35         };\r
36     }\r
37 \r
38 #endif\r