Pergunta

Eu tenho uma classe chamada Atomic que é basicamente um _Atomic_word além de métodos que chamam os builtins atômicas gcc.

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

Gostaria std::numeric_limits<Atomic> instanciar a std::numeric_limits<underlying integer type> (por exemplo, no meu _Atomic_word sistema é apenas um typedef para int).

Existe uma maneira de fazer isso?

Foi útil?

Solução

std::numeric_limits<Atomic> instanciará com Atomic como o tipo, você não pode subverter isso. No entanto, você pode especializar-se std::numeric_limits para Atomic como este

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

onde obviamente expor UnderlyingType como um tipo de Atomic.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top