返回类型上的重载功能? (重新访问)

| 有人可以告诉我在以下两种情况下编译器有什么不同吗?
   #include <cstdio>
    using namespace std;

    template <typename TReturn, typename T>
    TReturn convert(T x)
    {
        return x;
    }

    int main()
    {

       printf(\"Convert : %d %c\\n\", convert<int, double>(19.23), convert<char, double>(100));   
       return 0;
    } 
int convert(double x)
{
   return 100;
}

char convert(double x)
{
   return \'x\';
}         

int main()
{ 
   printf(\"Convert : %d %c\\n\", convert(19.23), convert(100));     // this doesn\'t compile
   return 0;
} 
第一种情况是否没有函数重载?     
已邀请:
当编译器遇到对模板函数的调用时,它使用模板自动生成一个函数,该函数用作为实际模板参数传递的类型(在这种情况下为double)替换每个外观,然后对其进行调用。该过程由编译器自动执行,并且对于程序员是不可见的。因此,它还实现了数据抽象和隐藏。 编译器不会将模板视为常规函数或类。它们是按需编译的,这意味着直到需要时才编译模板函数的代码。 第二个例子不是超载。您拼写错误。     

要回复问题请先登录注册