В настоящее время я занимаюсь рефакторингом старого кода, чтобы он соответствовал стандартам корректности C ++ 14, и происходит что-то странное.
Эта ошибка пока уникальна и не появляется в остальной части кода. Я запутал фактические типы, потому что они не важны.
До рефакторинга следующий код работал нормально:
namespace N {
class A {
public:
A(B* blah) : _blah(blah); //class A owns the instance of class B.
~A() { delete m_blah; m_blah = nullptr; }
//...Lots more code.
private:
B* m_blah;
};
}
Я изменил все необходимые указатели на основе владения на соответствующие умные указатели:
#include <memory>
namespace N {
class A {
public:
A(std::unique_ptr<B> blah);
~A() { /* DO NOTHING */ }
private:
std::unique_ptr<B> m_blah;
};
}
Это больше не работает. Intellisense сообщает об ошибке:
"Error: namespace "N::std" has no member unique_ptr"
в объявлении конструктора. (Но НЕ декларация m_blah
)
….Какие? Почему пространство имен стандартной библиотеки тянется в N ?!
Информация о версии:
Я загрузил VS этим утром, и проблема исчезла сама по себе.
В попытке удостовериться, что я могу изолировать любые будущие проблемы, и поскольку база кода огромна, я вернулся к исходной точке, чтобы посмотреть, смогу ли я предотвратить ошибку:
Все идет нормально.
Других решений пока нет …