
On Thu, 10 Mar 2005 17:44:34 +0000 Russell Hind <rh_gmane@mac.com> wrote:
template<typename Range> std::vector<int> to_vector_foreach_byval( Range & rng ) { std::vector<int> vect; typedef typename ::boost::range_result_iterator<Range>::type iterator; typedef typename ::boost::iterator_value<iterator>::type value; BOOST_FOREACH( value i, rng ) { vect.push_back(i); } return vect; }
The two typedef lines give these errors:
[C++ Error] main.cpp(110): E2437 'typename' should be followed by a qualified, dependent type name [C++ Error] main.cpp(111): E2437 'typename' should be followed by a qualified, dependent type name
So quite a few of these through the regression .cpp file. Any ideas how to solve these so I can run the tests?
replace typename with BOOST_DEDUCED_TYPENAME and see if that works. If not, then you may need a similar workaround that is used elsewhere... template<typename Range> std::vector<int> to_vector_foreach_byval( Range & rng ) { #if defined(__BORLANDC__) && (__BORLANDC__ <= 0x564) # define BOOST_typename #else # define BOOST_typename BOOST_DEDUCED_TYPENAME #endif std::vector<int> vect; typedef BOOST_typename ::boost::range_result_iterator<Range>::type iterator; typedef BOOST_typename ::boost::iterator_value<iterator>::type value; BOOST_FOREACH( value i, rng ) { vect.push_back(i); } return vect; #undef BOOST_typename }