~twpol/dcplusplus/trunk

« back to all changes in this revision

Viewing changes to boost/boost/mpl/aux_/na.hpp

  • Committer: James Ross
  • Date: 2010-07-05 00:03:18 UTC
  • mfrom: (1524.1.650 dcplusplus)
  • Revision ID: silver@warwickcompsoc.co.uk-20100705000318-awwqm8ocpp5m47yz
Merged to trunk.

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
 
 
2
 
#ifndef BOOST_MPL_AUX_NA_HPP_INCLUDED
3
 
#define BOOST_MPL_AUX_NA_HPP_INCLUDED
4
 
 
5
 
// Copyright Aleksey Gurtovoy 2001-2004
6
 
//
7
 
// Distributed under the Boost Software License, Version 1.0. 
8
 
// (See accompanying file LICENSE_1_0.txt or copy at 
9
 
// http://www.boost.org/LICENSE_1_0.txt)
10
 
//
11
 
// See http://www.boost.org/libs/mpl for documentation.
12
 
 
13
 
// $Id: na.hpp 49267 2008-10-11 06:19:02Z agurtovoy $
14
 
// $Date: 2008-10-11 02:19:02 -0400 (Sat, 11 Oct 2008) $
15
 
// $Revision: 49267 $
16
 
 
17
 
#include <boost/mpl/bool.hpp>
18
 
#include <boost/mpl/aux_/na_fwd.hpp>
19
 
#include <boost/mpl/aux_/config/msvc.hpp>
20
 
#include <boost/mpl/aux_/config/ctps.hpp>
21
 
 
22
 
namespace boost { namespace mpl {
23
 
 
24
 
template< typename T >
25
 
struct is_na
26
 
    : false_
27
 
{
28
 
#if BOOST_WORKAROUND(BOOST_MSVC, < 1300)
29
 
    using false_::value;
30
 
#endif
31
 
};
32
 
 
33
 
template<>
34
 
struct is_na<na>
35
 
    : true_
36
 
{
37
 
#if BOOST_WORKAROUND(BOOST_MSVC, < 1300)
38
 
    using true_::value;
39
 
#endif
40
 
};
41
 
 
42
 
template< typename T >
43
 
struct is_not_na
44
 
    : true_
45
 
{
46
 
#if BOOST_WORKAROUND(BOOST_MSVC, < 1300)
47
 
    using true_::value;
48
 
#endif
49
 
};
50
 
 
51
 
template<>
52
 
struct is_not_na<na>
53
 
    : false_
54
 
{
55
 
#if BOOST_WORKAROUND(BOOST_MSVC, < 1300)
56
 
    using false_::value;
57
 
#endif
58
 
};
59
 
 
60
 
#if !defined(BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION)
61
 
template< typename T, typename U > struct if_na
62
 
{
63
 
    typedef T type;
64
 
};
65
 
 
66
 
template< typename U > struct if_na<na,U>
67
 
{
68
 
    typedef U type;
69
 
};
70
 
#else
71
 
template< typename T > struct if_na_impl
72
 
{
73
 
    template< typename U > struct apply
74
 
    {
75
 
        typedef T type;
76
 
    };
77
 
};
78
 
 
79
 
template<> struct if_na_impl<na>
80
 
{
81
 
    template< typename U > struct apply
82
 
    {
83
 
        typedef U type;
84
 
    };
85
 
};
86
 
 
87
 
template< typename T, typename U > struct if_na
88
 
    : if_na_impl<T>::template apply<U>
89
 
{
90
 
};
91
 
#endif
92
 
 
93
 
}}
94
 
 
95
 
#endif // BOOST_MPL_AUX_NA_HPP_INCLUDED
 
1
 
 
2
#ifndef BOOST_MPL_AUX_NA_HPP_INCLUDED
 
3
#define BOOST_MPL_AUX_NA_HPP_INCLUDED
 
4
 
 
5
// Copyright Aleksey Gurtovoy 2001-2004
 
6
//
 
7
// Distributed under the Boost Software License, Version 1.0. 
 
8
// (See accompanying file LICENSE_1_0.txt or copy at 
 
9
// http://www.boost.org/LICENSE_1_0.txt)
 
10
//
 
11
// See http://www.boost.org/libs/mpl for documentation.
 
12
 
 
13
// $Id: na.hpp 49267 2008-10-11 06:19:02Z agurtovoy $
 
14
// $Date: 2008-10-11 02:19:02 -0400 (Sat, 11 Oct 2008) $
 
15
// $Revision: 49267 $
 
16
 
 
17
#include <boost/mpl/bool.hpp>
 
18
#include <boost/mpl/aux_/na_fwd.hpp>
 
19
#include <boost/mpl/aux_/config/msvc.hpp>
 
20
#include <boost/mpl/aux_/config/ctps.hpp>
 
21
 
 
22
namespace boost { namespace mpl {
 
23
 
 
24
template< typename T >
 
25
struct is_na
 
26
    : false_
 
27
{
 
28
#if BOOST_WORKAROUND(BOOST_MSVC, < 1300)
 
29
    using false_::value;
 
30
#endif
 
31
};
 
32
 
 
33
template<>
 
34
struct is_na<na>
 
35
    : true_
 
36
{
 
37
#if BOOST_WORKAROUND(BOOST_MSVC, < 1300)
 
38
    using true_::value;
 
39
#endif
 
40
};
 
41
 
 
42
template< typename T >
 
43
struct is_not_na
 
44
    : true_
 
45
{
 
46
#if BOOST_WORKAROUND(BOOST_MSVC, < 1300)
 
47
    using true_::value;
 
48
#endif
 
49
};
 
50
 
 
51
template<>
 
52
struct is_not_na<na>
 
53
    : false_
 
54
{
 
55
#if BOOST_WORKAROUND(BOOST_MSVC, < 1300)
 
56
    using false_::value;
 
57
#endif
 
58
};
 
59
 
 
60
#if !defined(BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION)
 
61
template< typename T, typename U > struct if_na
 
62
{
 
63
    typedef T type;
 
64
};
 
65
 
 
66
template< typename U > struct if_na<na,U>
 
67
{
 
68
    typedef U type;
 
69
};
 
70
#else
 
71
template< typename T > struct if_na_impl
 
72
{
 
73
    template< typename U > struct apply
 
74
    {
 
75
        typedef T type;
 
76
    };
 
77
};
 
78
 
 
79
template<> struct if_na_impl<na>
 
80
{
 
81
    template< typename U > struct apply
 
82
    {
 
83
        typedef U type;
 
84
    };
 
85
};
 
86
 
 
87
template< typename T, typename U > struct if_na
 
88
    : if_na_impl<T>::template apply<U>
 
89
{
 
90
};
 
91
#endif
 
92
 
 
93
}}
 
94
 
 
95
#endif // BOOST_MPL_AUX_NA_HPP_INCLUDED