2013-03-21 2 views
0

У меня относительно большой проект (в VS2010) с использованием boost. По какой-то причине, которую я не могу сковать на простом примере кода я ударяя об ошибке внутри библиотеки:Ошибка C3083 в unordered_set.hpp?

boost_1_53_0\boost/unordered/unordered_set.hpp(56): error C3083: 'detail': the symbol to the left of a '::' must be a type 
boost_1_53_0\boost/unordered/unordered_set.hpp(505) : see reference to class template instantiation 'anydsl::boost::unordered::unordered_set<T,H,P,A>' being compiled 

Проблема, вероятно, происходит где-то еще, но компилятор не дает абсолютно никакого намека о его происхождении.

Любые идеи, из которых может возникнуть?

У кого-нибудь еще была похожая проблема?

Я обновил свой импульс 1.47.0 до 1.53.0 после попадания ошибки, но проблема не устранена.

+0

Не могли бы вы проверить, в том числе неупорядоченный_компрессор перед любыми другими файлами? –

+0

Спасибо за предложение. Пробовал это, но проблема сохраняется. – CygnusX1

+0

Ударьте это. Это действительно исправляет проблему в .cpp-файле, я делаю это, но всплывает в другом. Это дает мне хороший намек на то, что происходит :) – CygnusX1

ответ

2

Как указано kassak, сообщение об ошибке предполагает, что вы включаете unordered_set.hpp, пока находитесь в другом собственном пространстве имен. Никогда не делайте этого, как плохие вещи.

В вашем конкретном случае, компилятор пытается решить

typedef boost::unordered::detail::set<A, T, H, P> types; 

в пространстве имен anydsl. Поскольку anydsl::boost::unordered::detail не существует, он выдает ошибку (несколько вводящую в заблуждение), что detail не называет тип.