C ++ идентичная сигнатура метода, но другой тип возвращаемого значения

Я видел следующий код:

template <class T>
class Type {
    public:
        Type() {}
        T& operator=(const T& rhs) {value() = rhs; return value();}
        T& value() {return m_value;}
        T value() const {return m_value;}
    private:
        T m_value;
};

Почему компилятор не жалуется на

    T& value() {return m_value;}
    T value() const {return m_value;}

и как узнать, какой из них вызывается?

8
задан agentsmith 21 October 2015 в 16:00
поделиться