I have a template function that works for 99% of the cases and want a different one for the 1%. The problem is that the template case is too "vague" and thus the compiler tries to use it for everything.

Code:
template <typename T> T get(T a)
{
    ...
}

//The one case I want diff.
std::string get(SomeClass a)
{
 ...
}

int main()
{
    std::string name( "Jeff" );

    //This is correct
    std::string val = get( name );

    SomeClass a;

    //Won't compile, says:
    //cannot convert 'SomeClass' to 'std::string' in initialization
    std::string val = get( a );
}