// A Scalar with internal representation T+1 so that zero is internally | |
// represented by T(1). This is used to test memory fill. | |
// | |
#pragma once | |
template <typename T> | |
class OffByOneScalar { | |
public: | |
OffByOneScalar() : val_(1) {} | |
OffByOneScalar(const OffByOneScalar& other) = default; | |
OffByOneScalar& operator=(const OffByOneScalar& other) = default; | |
OffByOneScalar(T val) : val_(val + 1) {} | |
OffByOneScalar& operator=(T val) { val_ = val + 1; } | |
operator T() const { return val_ - 1; } | |
private: | |
T val_; | |
}; |