Sacado Package Browser (Single Doxygen Collection)
Version of the Day
Main Page
Related Pages
Namespaces
Classes
Files
File List
File Members
All
Classes
Namespaces
Files
Functions
Variables
Typedefs
Enumerations
Enumerator
Friends
Macros
Groups
Pages
src
mpl
Sacado_mpl_type_wrap.hpp
Go to the documentation of this file.
1
// @HEADER
2
// ***********************************************************************
3
//
4
// Sacado Package
5
// Copyright (2006) Sandia Corporation
6
//
7
// Under the terms of Contract DE-AC04-94AL85000 with Sandia Corporation,
8
// the U.S. Government retains certain rights in this software.
9
//
10
// This library is free software; you can redistribute it and/or modify
11
// it under the terms of the GNU Lesser General Public License as
12
// published by the Free Software Foundation; either version 2.1 of the
13
// License, or (at your option) any later version.
14
//
15
// This library is distributed in the hope that it will be useful, but
16
// WITHOUT ANY WARRANTY; without even the implied warranty of
17
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
18
// Lesser General Public License for more details.
19
//
20
// You should have received a copy of the GNU Lesser General Public
21
// License along with this library; if not, write to the Free Software
22
// Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301
23
// USA
24
// Questions? Contact David M. Gay (dmgay@sandia.gov) or Eric T. Phipps
25
// (etphipp@sandia.gov).
26
//
27
// ***********************************************************************
28
// @HEADER
29
30
#ifndef SACADO_MPL_TYPE_WRAP_HPP
31
#define SACADO_MPL_TYPE_WRAP_HPP
32
33
#include "
Sacado_mpl_has_type.hpp
"
34
35
namespace
Sacado {
36
37
namespace
mpl {
38
39
// Wrap a type T so that it becomes a metafunction if it isn't already
40
41
// We should check if T is a class type and derive add_type from T if
42
// it is. This would allow us to use type_wrap in mpl_if since we assume
43
// mpl_if<cond,T1,T2> is derived from T1 or T2 in mpl_find.
44
template
<
class
T>
struct
add_type
{
typedef
T
type
; };
45
46
// Don't use mpl_if because it uses type_wrap in its implementation
47
// (actually not, see above).
48
template
<
bool
cond,
class
T>
struct
type_wrap_impl
{};
49
template
<
class
T>
struct
type_wrap_impl
<
true
,
T
> :
T
{};
50
template
<
class
T>
struct
type_wrap_impl
<
false
,
T
> :
add_type
<T> {};
51
template
<
class
T>
struct
type_wrap
:
52
type_wrap_impl
< mpl::has_type<T>::value, T > {};
53
54
}
// namespace mpl
55
56
}
// namespace Sacado
57
58
#endif // SACADO_MPL_TYPE_WRAP_HPP
true
expr true
Definition:
Sacado_ELRFad_Ops.hpp:182
Sacado::mpl::add_type
Definition:
Sacado_mpl_type_wrap.hpp:44
T
#define T
Definition:
Sacado_rad.hpp:573
Sacado::mpl::type_wrap
Definition:
Sacado_mpl_type_wrap.hpp:51
Sacado_mpl_has_type.hpp
Sacado::mpl::add_type::type
T type
Definition:
Sacado_mpl_type_wrap.hpp:44
false
expr expr expr bar false
Definition:
Sacado_ELRFad_Ops.hpp:190
Sacado::mpl::type_wrap_impl
Definition:
Sacado_mpl_type_wrap.hpp:48
Generated by
1.8.5