CygnusX1
CygnusX1

Reputation: 21818

Error C3083 in unordered_set.hpp?

I have a relatively big project (in VS2010) using boost. For some reason which I can't pin down to a simple code example I am hitting an error from within the library:

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

The problem probably originates from somewhere else but the compiler gives absolutely no hint about its origin.

Any ideas where it could be originating from?

Anyone else experienced a similar problem?

I upgraded my boost 1.47.0 to 1.53.0 after hitting the bug but the problem persists.

Upvotes: 0

Views: 538

Answers (1)

CygnusX1
CygnusX1

Reputation: 21818

As pointed by kassak, the error message suggests that you are including unordered_set.hpp while you are within another namespace of your own. Never ever do that as bad things happen.

In your particular case, the compiler tries to resolve

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

within your namespace anydsl. As anydsl::boost::unordered::detail does not exist, it throws a (somewhat misleading) error that detail does not name a type.

Upvotes: 2

Related Questions