~ubuntu-branches/ubuntu/wily/bombono-dvd/wily

« back to all changes in this revision

Viewing changes to libs/boost-lib/boost/range/detail/sfinae.hpp

  • Committer: Bazaar Package Importer
  • Author(s): Alessio Treglia
  • Date: 2010-11-04 11:46:25 UTC
  • mto: This revision was merged to the branch mainline in revision 8.
  • Revision ID: james.westby@ubuntu.com-20101104114625-8xfdhvhpsm51i0nu
Tags: upstream-0.8.0
ImportĀ upstreamĀ versionĀ 0.8.0

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
// Boost.Range library
 
2
//
 
3
//  Copyright Thorsten Ottosen 2003-2004. Use, modification and
 
4
//  distribution is subject to the Boost Software License, Version
 
5
//  1.0. (See accompanying file LICENSE_1_0.txt or copy at
 
6
//  http://www.boost.org/LICENSE_1_0.txt)
 
7
//
 
8
// For more information, see http://www.boost.org/libs/range/
 
9
//
 
10
 
 
11
#ifndef BOOST_RANGE_DETAIL_SFINAE_HPP
 
12
#define BOOST_RANGE_DETAIL_SFINAE_HPP
 
13
 
 
14
#include <boost/range/config.hpp>
 
15
#include <boost/type_traits/is_array.hpp>
 
16
#include <boost/type_traits/detail/yes_no_type.hpp>
 
17
#include <utility>
 
18
 
 
19
 
 
20
namespace boost 
 
21
{
 
22
    namespace range_detail
 
23
    {          
 
24
        using type_traits::yes_type;
 
25
        using type_traits::no_type;
 
26
 
 
27
        //////////////////////////////////////////////////////////////////////
 
28
        // string
 
29
        //////////////////////////////////////////////////////////////////////
 
30
        
 
31
        yes_type is_string_impl( const char* const );
 
32
        yes_type is_string_impl( const wchar_t* const );
 
33
        no_type  is_string_impl( ... );
 
34
        
 
35
        template< std::size_t sz >
 
36
        yes_type is_char_array_impl( char BOOST_RANGE_ARRAY_REF()[sz] );
 
37
        template< std::size_t sz >
 
38
        yes_type is_char_array_impl( const char BOOST_RANGE_ARRAY_REF()[sz] );
 
39
        no_type  is_char_array_impl( ... );
 
40
        
 
41
        template< std::size_t sz >
 
42
        yes_type is_wchar_t_array_impl( wchar_t BOOST_RANGE_ARRAY_REF()[sz] );
 
43
        template< std::size_t sz >
 
44
        yes_type is_wchar_t_array_impl( const wchar_t BOOST_RANGE_ARRAY_REF()[sz] );
 
45
        no_type  is_wchar_t_array_impl( ... );
 
46
                                     
 
47
        yes_type is_char_ptr_impl( char* const );
 
48
        no_type  is_char_ptr_impl( ... );
 
49
        
 
50
        yes_type is_const_char_ptr_impl( const char* const );
 
51
        no_type  is_const_char_ptr_impl( ... );
 
52
 
 
53
        yes_type is_wchar_t_ptr_impl( wchar_t* const );
 
54
        no_type  is_wchar_t_ptr_impl( ... );
 
55
        
 
56
        yes_type is_const_wchar_t_ptr_impl( const wchar_t* const );
 
57
        no_type  is_const_wchar_t_ptr_impl( ... );
 
58
        
 
59
        //////////////////////////////////////////////////////////////////////
 
60
        // pair
 
61
        //////////////////////////////////////////////////////////////////////
 
62
 
 
63
        template< typename Iterator >
 
64
        yes_type is_pair_impl( const std::pair<Iterator,Iterator>* );
 
65
        no_type  is_pair_impl( ... );
 
66
 
 
67
        //////////////////////////////////////////////////////////////////////
 
68
        // tags
 
69
        //////////////////////////////////////////////////////////////////////
 
70
 
 
71
        struct char_or_wchar_t_array_tag {};
 
72
        
 
73
    } // namespace 'range_detail'
 
74
    
 
75
} // namespace 'boost'
 
76
 
 
77
#endif