libbio
Loading...
Searching...
No Matches
inc
bio
common
type
IsConst.h
Go to the documentation of this file.
1
/*
2
* This file is a part of the Biology project by eons LLC.
3
* Biology (aka Develop Biology) is a framework for approaching software
4
* development from a natural sciences perspective.
5
*
6
* Copyright (C) 2022 Séon O'Shannon & eons LLC
7
*
8
* This program is free software: you can redistribute it and/or modify
9
* it under the terms of the GNU Affero General Public License as
10
* published by the Free Software Foundation, either version 3 of the
11
* License, or (at your option) any later version.
12
*
13
* This program is distributed in the hope that it will be useful,
14
* but WITHOUT ANY WARRANTY; without even the implied warranty of
15
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
16
* GNU Affero General Public License for more details.
17
*
18
* You should have received a copy of the GNU Affero General Public License
19
* along with this program. If not, see <https://www.gnu.org/licenses/>.
20
*/
21
22
#pragma once
23
24
#include "
bio/common/macro/Macros.h
"
25
26
//@formatter:off
27
#if BIO_CPP_VERSION >= 11
28
#include <type_traits>
29
#endif
30
//@formatter:on
31
32
namespace
bio
{
33
namespace
type {
34
35
//@formatter:off
36
#if BIO_CPP_VERSION < 11
37
template
<
typename
T>
38
struct
IsConstImplementation
{
static
const
bool
sValue
=
false
;};
39
40
template
<
typename
T>
41
struct
IsConstImplementation
<
const
T
> {
static
const
bool
sValue
=
true
;};
42
43
#endif
44
//@formatter:on
45
52
template
<
typename
T >
53
BIO_CONSTEXPR
bool
IsConst
()
54
{
55
//@formatter:off
56
#if BIO_CPP_VERSION < 11
57
return
IsConstImplementation< T >::sValue
;
58
#else
59
return ::std::is_const<T>::value;
60
#endif
61
//@formatter:on
62
}
63
70
template
<
typename
T >
71
bool
IsConst
(
const
T
t
)
72
{
73
return
IsConst< T >
();
74
}
75
76
}
//type namespace
77
}
//bio namespace
BIO_CONSTEXPR
#define BIO_CONSTEXPR
Definition
KeywordMacros.h:29
bio::Pointer
Definition
Pointer.h:115
Macros.h
bio::type::IsConst
BIO_CONSTEXPR bool IsConst()
Definition
IsConst.h:53
bio
Definition
FinalCell.h:29
bio::type::IsConstImplementation
Definition
IsConst.h:38
bio::type::IsConstImplementation::sValue
static const bool sValue
Definition
IsConst.h:38
Generated by
1.9.8