代码之家  ›  专栏  ›  技术社区  ›  Yippie-Ki-Yay

C++中的模板参数

  •  3
  • Yippie-Ki-Yay  · 技术社区  · 15 年前

    假设我有任意模板方法,它可以接收参数 (显然,对于普通类型和相应的对象)。

    编写模板函数原型时如何处理这种情况?

    我可以做一些像:

    template <typename T> void Foo(T value) {
       // Do something.
    }
    
    template <typename T> void Foo(const T& value) {
       // Do something, yeah.
    }
    
    // Specialization for first prototype. 
    template <> void Foo<int>(int value) { }
    
    // Specialization for second prototype. 
    template <> void Foo<Object>(const Object& value) { }
    

    但这种方法只适用于一些琐碎的函数,这些函数纯粹充当其他调用的包装器。

    如果函数 (非模板版本) 里面有很多代码,这意味着 我得复制两次代码。

    我能做点更聪明的吗?

    2 回复  |  直到 15 年前
        1
  •  7
  •   Armen Tsirunyan    15 年前

    只需始终使用by const引用,因为将原语类型作为const引用传递时没有太多开销。

        2
  •  5
  •   Fred Foo    15 年前

    为编写模板代码 const 只引用并依赖编译器来优化引用。