AMDiS  0.3
The Adaptive Multi-Dimensional Simulation Toolbox
OptionalNoCopy.hpp
1 #pragma once
2 
3 #include <optional>
4 
5 namespace AMDiS {
6 
8 template <class T>
10  : public std::optional<T>
11 {
12  using Self = OptionalNoCopy;
13  using Super = std::optional<T>;
14 
15 public:
16  using Super::Super;
17 
20  : Super(std::nullopt)
21  {}
22 
25  : Super(std::nullopt)
26  {}
27 
29  Self& operator=(Self const&)
30  {
31  return *this;
32  }
33 
36  {
37  return *this;
38  }
39 };
40 
41 } // end namespace AMDiS
Definition: FieldMatVec.hpp:12
Self & operator=(Self const &)
Copy assignment does nothing.
Definition: OptionalNoCopy.hpp:29
OptionalNoCopy(Self const &)
Copy constructor discards the stored optional value.
Definition: OptionalNoCopy.hpp:19
Definition: AdaptBase.hpp:6
OptionalNoCopy(Self &&)
Move constructor discards the stored optional value.
Definition: OptionalNoCopy.hpp:24
Self & operator=(Self &&)
Move assignment does nothing.
Definition: OptionalNoCopy.hpp:35
Modification of std::optional that does not copy or move its content.
Definition: OptionalNoCopy.hpp:9