SafeScalar.h
Go to the documentation of this file.
1 
2 // A Scalar that asserts for uninitialized access.
3 template <typename T>
4 class SafeScalar {
5  public:
6  SafeScalar() : initialized_(false) {}
7 
8  SafeScalar(const T& val) : val_(val), initialized_(true) {}
9 
10  template <typename Source>
11  explicit SafeScalar(const Source& val) : SafeScalar(T(val)) {}
12 
13  operator T() const {
14  VERIFY(initialized_ && "Uninitialized access.");
15  return val_;
16  }
17 
18  template <typename Target>
19  explicit operator Target() const {
20  return Target(this->operator T());
21  }
22 
23  private:
26 };
27 
28 namespace Eigen {
29 template <typename T>
31  enum { RequireInitialization = 1 };
32 };
33 } // namespace Eigen
Eigen::Triplet< double > T
Definition: EigenUnitTest.cpp:11
Definition: SafeScalar.h:4
SafeScalar()
Definition: SafeScalar.h:6
SafeScalar(const Source &val)
Definition: SafeScalar.h:11
bool initialized_
Definition: SafeScalar.h:25
SafeScalar(const T &val)
Definition: SafeScalar.h:8
T val_
Definition: SafeScalar.h:24
Definition: Source.h:14
#define VERIFY(a)
Definition: main.h:362
@ Target
Definition: Constants.h:495
Namespace containing all symbols from the Eigen library.
Definition: bench_norm.cpp:70
val
Definition: calibrate.py:119
Definition: NumTraits.h:172
@ RequireInitialization
Definition: NumTraits.h:177
Holds information about the various numeric (i.e. scalar) types allowed by Eigen.
Definition: NumTraits.h:217