Templates and std::numeric_limits

淺唱寂寞╮ 提交于 2019-12-10 09:51:50

问题


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

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!