XCode 8.3.1 Класс шаблона Error Mocking

Учитывая класс шаблона, например:

template<typename T,typename V>
class IAmTemplate {
public:
    virtual boost::shared_ptr<V> get_v() const = 0;
    virtual boost::shared_ptr<T> get_t() const = 0;
};

и макетная реализация:

template <typename T, typename V>
class MockIAmTemplate : public IAmTemplate<T,V> {
public:
    MOCK_CONST_METHOD0_T(get_v, boost::shared_ptr<V>());
    MOCK_CONST_METHOD0_T(get_t, boost::shared_ptr<T>());
};

Кажется, это должно строиться без проблем. И действительно, я обнаружил, что могу построить это с помощью clang, DevStudio и XCode 8.2. Однако, когда я перехожу на XCode 8.3 или 8.3.1, я получаю ошибки: Привязка разыменованного нулевого указателя к ссылке имеет неопределенное поведение

Похоже, макрос MOCK недоволен возвращаемым типом boost::shared_ptr, тогда как в предыдущих версиях с ним все было в порядке.

Любые идеи?


person Bruce B.    schedule 12.04.2017    source источник


Ответы (1)


Как оказалось, есть более свежая версия GMock, которая решает мою проблему. После переключения на него моей сборки я больше не получаю ошибок компиляции.

person Bruce B.    schedule 12.04.2017