代码之家  ›  专栏  ›  技术社区  ›  Victor Tsang

不知道……专门的默认参数是否混淆了模板类型推断?[副本]

  •  0
  • Victor Tsang  · 技术社区  · 6 年前

    我很惊讶以下代码会导致 could not deduce template argument for T 错误:

    struct foo
    {
      template <typename T>
      void bar(int a, T b = 0.0f)
      {
      }
    };
    
    int main()
    {
      foo a;
      a.bar(5);
    
      return 0;
    }
    

    打电话 a.bar<float>(5) 修复问题。为什么编译器不能从默认参数推断出类型?

    0 回复  |  直到 11 年前