By using this site, you agree to our updated Privacy Policy and our Terms of Use. Manage your Cookies Settings.
454,952 Members | 1,424 Online
Bytes IT Community
+ Ask a Question
Need help? Post your question and get tips & solutions from a community of 454,952 IT Pros & Developers. It's quick & easy.

too few template-parameter-lists

P: n/a

#include <iostream>

#include <boost/mpl/vector.hpp>
#include <boost/mpl/find.hpp>

using namespace std ;
using namespace boost ;

template <typename numericTypes>
struct evalThis
{
void operator()()
{
typedef mpl::find<numericTypes, char>::type iter ; //
ERROR : error: too few template-parameter-lists
}
} ;

int main()
{
typedef mpl::vector<int, float, char, double, long>
myNumericTypes ;

evalThis<myNumericTypesmyObj ;
myObj.operator()() ;

return 0 ;
}
Nov 18 '08 #1
Share this Question
Share on Google+
2 Replies


P: n/a
Kaushal wrote:
#include <iostream>

#include <boost/mpl/vector.hpp>
#include <boost/mpl/find.hpp>

using namespace std ;
using namespace boost ;

template <typename numericTypes>
struct evalThis
{
void operator()()
{
typedef mpl::find<numericTypes, char>::type iter ; //
ERROR : error: too few template-parameter-lists
WTH is 'mpl::find'? How is it defined?
}
} ;

int main()
{
typedef mpl::vector<int, float, char, double, long>
myNumericTypes ;

evalThis<myNumericTypesmyObj ;
myObj.operator()() ;

return 0 ;
}
V
--
Please remove capital 'A's when replying by e-mail
I do not respond to top-posted replies, please don't ask
Nov 18 '08 #2

P: n/a
On Nov 18, 1:13 pm, Kaushal <kausha...@gmail.comwrote:
[...]
// ERROR : error: too few template-parameter-lists
typedef mpl::find<numericTypes, char>::type iter;

It's just another C++ wart: the problem is that
mpl::find<numericTypes, char>::type could be a value
or a type, depending on the template arguments.
The language assumes it's a value, so what you've
got there would be like saying:

struct Person { string name; };
...
typedef Person::name iter;

where name is obviously a value and not a type.

The solution is to explicitly tell the compiler that it's
a type with "typename":

typedef typename mpl::find<numericTypes, char>::type iter ;

You can read more about the issue here:

http://www.comeaucomputing.com/techt...ates/#typename

Cheers,
Sean

PS: the previous post asking how the hell mpl::find is defined is
this newsgroup's surprising vernacular for telling you that your
post is off-topic. You might have a friendlier reception
on a Boost mailing list.
Nov 18 '08 #3

This discussion thread is closed

Replies have been disabled for this discussion.