mirror of
https://gitlab.com/OpenMW/openmw.git
synced 2025-04-28 12:58:00 +03:00
45 lines
812 B
C++
45 lines
812 B
C++
![]() |
#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;
|
||
|
|
||
|
explicit StrongTypedef(const T& value)
|
||
|
: mValue(value)
|
||
|
{
|
||
|
}
|
||
|
|
||
|
explicit StrongTypedef(T&& value)
|
||
|
: mValue(std::move(value))
|
||
|
{
|
||
|
}
|
||
|
|
||
|
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
|