Skip to main content
GameDev.net gamedev.net
🔒 Locked

expected template ambiguity

Started by blubberbert May 22, 2013 at 11:42 PM 1 replies 1.9k views
Original Post
blubberbert
blubberbert
i expected the following code to raise an error because the compiler doesnt know wich func to use, the template or non-template one

#include <string>
#include <iostream>
#include <cstdlib>
 
template<typename T>
T func(T arg) { return arg; }
 
std::string func(std::string arg) { return "surprise!"; }
 
 
int main(int argc, char **argv) {
    std::cout << func(std::string("no surprise please!") );
    system("PAUSE");
    return 0;
}
however the code always calls the non-template function.
1.Why is that?
2.If that kind of behaviour is part of the standard (calling non-template functions rather than fitting templates), whats the point of the special syntax for template specialization?
i.e.

template<>
std::string func<std::string>(std::string arg) { return "surprise!"; }
------------------------------
Join the revolution and get a free donut!
blubberbert
blubberbert

wow that was fast.

article explains everything... holy **** thats complicated :D

thanks for helping

------------------------------
Join the revolution and get a free donut!

Topic Locked

This topic has been locked by a moderator. New replies are not allowed.

Sign in to reply to this topic.