static template functions in a class

CodeKingPlusPlus picture CodeKingPlusPlus · Feb 19, 2012 · Viewed 90.6k times · Source

How do I make the following function inside a class and then access this function from main? My class is just a collection of a bunch of static functions.

template<typename T> double foo(vector<T> arr);

Answer

Tim Kachko picture Tim Kachko · Feb 19, 2012

Define the function in the .h file.

Works fine for me

a.h

#include <vector>
#include <iostream>

using namespace std;
class A {
public:
template< typename T>
    static double foo( vector<T> arr );

};

template< typename T>
double A::foo( vector<T> arr ){ cout << arr[0]; }

main.cpp

#include "a.h"
int main(int argc, char *argv[])
{
    A a;
    vector<int> arr;
    arr.push_back(1);
    A::foo<int> ( arr );
}