Шаблоны и std :: numeric_limits - PullRequest
3 голосов
/ 23 октября 2009

У меня есть класс с именем Atomic, который по сути является _Atomic_word plus методами, которые вызывают gcc atomic buildins.

class Atomic{
    mutable volatile _Atomic_word value_;
public:
    Atomic(int value = 0): value_(value) {}
    **** blah blah ****
};

Я бы хотел std::numeric_limits<Atomic> создать экземпляр std::numeric_limits<underlying integer type> (например, в моей системе _Atomic_word это просто определение типа для int).

Есть ли способ сделать это?

1 Ответ

14 голосов
/ 23 октября 2009

std::numeric_limits<Atomic> будет создан с типом Atomic, вы не можете это подорвать. Однако вы можете специализировать std::numeric_limits для Atomic, как это

template<>
class numeric_limits< Atomic > : public numeric_limits< Atomic::UnderlyingType >
{
};

где вы явно выставляете UnderlyingType как тип в Atomic.

...