问题
I have a class called Atomic which is basically an _Atomic_word
plus methods that call the gcc atomic builtins.
class Atomic{
mutable volatile _Atomic_word value_;
public:
Atomic(int value = 0): value_(value) {}
**** blah blah ****
};
I would like std::numeric_limits<Atomic>
to instantiate to std::numeric_limits<underlying integer type>
(e.g. on my system _Atomic_word
is just a typedef for int).
Is there a way to do this?
回答1:
std::numeric_limits<Atomic>
will instantiate with Atomic
as the type, you can't subvert that. However you could specialise std::numeric_limits
for Atomic
like this
template<>
class numeric_limits< Atomic > : public numeric_limits< Atomic::UnderlyingType >
{
};
where you obviously expose UnderlyingType
as a type in Atomic
.
来源:https://stackoverflow.com/questions/1615197/templates-and-stdnumeric-limits