version 3.9.0
Loading...
Searching...
No Matches
optionalscalar.hh
Go to the documentation of this file.
1
// -*- mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*-
2
// vi: set et ts=4 sw=4 sts=4:
3
//
4
// SPDX-FileCopyrightInfo: Copyright © DuMux Project contributors, see AUTHORS.md in root folder
5
// SPDX-License-Identifier: GPL-3.0-or-later
6
//
12
#ifndef DUMUX_COMMON_OPTIONAL_SCALAR_HH
13
#define DUMUX_COMMON_OPTIONAL_SCALAR_HH
14
15
#include <limits>
16
#include <cmath>
17
18
namespace
Dumux
{
19
25
template
<
class
T>
26
struct
OptionalScalar
27
{
28
static_assert
(std::numeric_limits<T>::has_quiet_NaN,
"T has to be able to represent a quiet NaN!"
);
29
30
OptionalScalar
() =
default
;
31
32
OptionalScalar
(T
value
)
33
: value_(
value
)
34
{}
35
36
T
value
()
const
37
{
return
value_; }
38
39
explicit
operator
bool()
const
40
{
41
using
std::isnan;
42
return
!isnan(value_);
43
}
44
private
:
45
T value_ = std::numeric_limits<T>::quiet_NaN();
46
};
47
48
}
// namespace Dumux
49
50
#endif
Dumux
Definition
adapt.hh:17
Dumux::OptionalScalar
A type for an optional scalar (contains either a valid number or NaN)
Definition
optionalscalar.hh:27
Dumux::OptionalScalar::OptionalScalar
OptionalScalar(T value)
Definition
optionalscalar.hh:32
Dumux::OptionalScalar::value
T value() const
Definition
optionalscalar.hh:36
Dumux::OptionalScalar::OptionalScalar
OptionalScalar()=default
dumux
common
optionalscalar.hh
© Copyright 2010-
DuMux project contributors
(doc pages:
CC-BY 4.0
/ code examples:
GPLv3 or later
)
3.9.0 Generated by
1.12.0