telplate template arguments and default parameters

A

avasilev

HI all,
I have implemented a function that takes a string as input, parses it,
and outputs a map<string, string> of name=value pairs. Something like:

bool parse(const string& input, map<string, string>& output)
However, to make it more flexible, I want to be able to change the
kind of map that is being used, so that it can be a hash_map, multimap
or whatever. For this purpose I need to make the function a template
function. I want as parameter for the template the "map" class name,
and I will use a specialized <string,string>version of it.
I am doing the following:

template <template <key, value> class T>
bool parse(const string& input, T<string,string> output)
{
....

}

then I try to call the function like this:
std::map<string, string>;
string input = "name=val;name1=val1"
parse<std::map>(input , m);

But this fails to compile, with the error (using gcc):

error: no matching function for call to
'parse(std::basic_string<char>&, std::map<std::basic_string<char>,
std::basic_string<char> >&)'

I have tried to compile an example where I define the 'map' class, and
it takes strictly two parameters. This compiles fine. It also compiles
if I provide the default template parameters of the std::map class:

template < template < class k, class v, class Compare, class
Allocator> class T >

void parse(const string& input, T < string , string, less<string>,
allocator<pair<const string,string> > > output)

My question is - is there a way to make what I want without providing
all default template parameters, the least reason being that a
different 'map' class may have different default template parameters.

Thanks in advance
Best regards
Alex
 
V

Victor Bazarov

HI all,
I have implemented a function that takes a string as input, parses it,
and outputs a map<string, string> of name=value pairs. Something like:
[...impatient repost snipped...]

Please learn to have patience in a newsgroup. This is not a chat room
where somebody is just waiting to serve you.

V
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

No members online now.

Forum statistics

Threads
473,744
Messages
2,569,482
Members
44,901
Latest member
Noble71S45

Latest Threads

Top