Loop with generic parameter : template parameter « template « C++ Tutorial






/* The following code example is taken from the book
 * "C++ Templates - The Complete Guide"
 * by David Vandevoorde and Nicolai M. Josuttis, Addison-Wesley, 2002
 *
 * (C) Copyright David Vandevoorde and Nicolai M. Josuttis 2002.
 * Permission to copy, use, modify, sell and distribute this software
 * is granted provided this copyright notice appears in all copies.
 * This software is provided "as is" without express or implied
 * warranty, and with no claim as to its suitability for any purpose.
 */
#include <iostream>

template <typename T>
inline T dot_product (int dim, T* a, T* b)
{
    T result = T();
    for (int i=0; i<dim; ++i) {
        result += a[i]*b[i];
    }
    return result;
}

int main()
{
    int a[3] = { 1, 2, 3};
    int b[3] = { 5, 6, 7};

    std::cout << "dot_product(3,a,b) = " << dot_product(3,a,b)
              << '\n';
    std::cout << "dot_product(3,a,a) = " << dot_product(3,a,a)
              << '\n';
}
dot_product(3,a,b) = 38
dot_product(3,a,a) = 14








13.4.template parameter
13.4.1.Demonstrate non-type template arguments
13.4.2.Default template arguments
13.4.3.primary template: yield second or third argument depending on first argument
13.4.4.primary template to compute sqrt(N) via iteration and partial specialization to end the iteration
13.4.5.Sqrt: primary template: yield second or third argument depending on first argument
13.4.6.Loop with generic parameter
13.4.7.Define implicit_cast
13.4.8.template function for generic parameter and pointer to generic parameter
13.4.9.Nested template type
13.4.10.Use template parameter as constructor parameter