Учитывая класс шаблона, например:
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, тогда как в предыдущих версиях с ним все было в порядке.
Любые идеи?