代码之家  ›  专栏  ›  技术社区  ›  LD_FLO

仅类型推断模板

  •  0
  • LD_FLO  · 技术社区  · 8 年前

    我有一个定义如下的函数模板:

    // #1
    template <typename R, typename T>
    R func(T arg) { ... }
    
    // #2
    template <typename T>
    T func(T arg) { ... }
    

    func<int>(my_var); // calls #1
    func(my_var); // calls #2
    

    当尝试执行第一个调用时,我得到一个模糊的函数调用错误。

    有没有办法做到这一点?

    1 回复  |  直到 8 年前
        1
  •  1
  •   Quentin    8 年前

    这不会获得任何优雅奖,但是。。。

    // #1
    template <typename R, typename T>
    R func(T) { /* ... */ }
    
    // #2
    template <int = 0, typename T>
    T func(T) { /* ... */ }
    

    func<int>(4) 将尝试为的非类型参数提供类型参数 #2