2022-02-24 00:24:41 +01:00
|
|
|
#ifndef OPENMW_COMPONENTS_MISC_STRONGTYPEDEF_H
|
|
|
|
#define OPENMW_COMPONENTS_MISC_STRONGTYPEDEF_H
|
|
|
|
|
|
|
|
#include <utility>
|
|
|
|
|
|
|
|
namespace Misc
|
|
|
|
{
|
|
|
|
template <class T, class>
|
|
|
|
struct StrongTypedef
|
|
|
|
{
|
|
|
|
T mValue;
|
|
|
|
|
|
|
|
StrongTypedef() = default;
|
|
|
|
|
2022-09-22 21:26:05 +03:00
|
|
|
explicit StrongTypedef(const T& value)
|
|
|
|
: mValue(value)
|
|
|
|
{
|
|
|
|
}
|
2022-02-24 00:24:41 +01:00
|
|
|
|
2022-09-22 21:26:05 +03:00
|
|
|
explicit StrongTypedef(T&& value)
|
|
|
|
: mValue(std::move(value))
|
|
|
|
{
|
|
|
|
}
|
2022-02-24 00:24:41 +01:00
|
|
|
|
|
|
|
operator const T&() const { return mValue; }
|
|
|
|
|
|
|
|
operator T&() { return mValue; }
|
|
|
|
|
|
|
|
StrongTypedef& operator++()
|
|
|
|
{
|
|
|
|
++mValue;
|
|
|
|
return *this;
|
|
|
|
}
|
|
|
|
|
|
|
|
StrongTypedef operator++(int)
|
|
|
|
{
|
|
|
|
StrongTypedef copy(*this);
|
|
|
|
operator++();
|
|
|
|
return copy;
|
|
|
|
}
|
|
|
|
};
|
|
|
|
}
|
|
|
|
|
|
|
|
#endif
|