我想要在 Visual Studio 2010 中编译的 C++ 中的强类型整数。
我需要这种类型在某些模板中充当整数。特别是我需要能够:
StrongInt x0(1); //construct it.
auto x1 = new StrongInt[100000]; //construct it without initialization
auto x2 = new StrongInt[10](); //construct it with initialization
我见过这样的事情:
class StrongInt
{
int value;
public:
explicit StrongInt(int v) : value(v) {}
operator int () const { return value; }
};
或者
class StrongInt
{
int value;
public:
StrongInt() : value(0) {} //fails 'construct it without initialization
//StrongInt() {} //fails 'construct it with initialization
explicit StrongInt(int v) : value(v) {}
operator int () const { return value; }
};
由于这些东西不是 POD,所以它们不太有效。