Thanks again for your help. I was also able to get that example to compile, which was perfect. Unfortunately, it seems rather fragile. I had copied most of the pieces over into a split test.hpp/test.cpp, and kept getting errors. I did eventually resolve the problem by more completely replacing them with your code directly, but I wasn't able to figure out what was causing the problem. Of course, that means when I tried to apply it to my real code, I ended up with the same error:
solution.hpp:36:3: error: template argument 1 is invalid
solution.hpp:36:4: error: expected identifier before ‘::’ token
solution.hpp:36:6: error: typedef name may not be a nested-name-specifier
solution.hpp:36:6: error: expected ‘;’ at end of member declaration
solution.hpp:36:11: error: ‘type’ does not name a type
solution.hpp:52:3: error: template argument 1 is invalid
solution.hpp:52:4: error: expected identifier before ‘::’ token
solution.hpp:52:6: error: typedef name may not be a nested-name-specifier
solution.hpp:52:6: error: expected ‘;’ at end of member declaration
solution.hpp:52:11: error: ‘type’ does not name a type
the relevant pieces of code were the following:
31 template<class T>
32 struct get_neighborhood_type {
33 typedef typename mpl::eval_if<is_placeholder<T>,
34 mpl::identity<void>,
35 get_neighborhood_type_impl<T>
36 >::type type;
37 };
and
47 template<class T>
48 struct get_iterator_type {
49 typedef typename mpl::eval_if<is_placeholder<T>,
50 mpl::identity<void>,
51 get_iterator_type_impl<T>
52 >::type type;
53 };
which are pretty much the same as what you sent me, but with the names changed. Are there any likely causes of these errors that occur to you, so I can try so fix them in a somewhat intelligent fashion?
Thanks.
-sc