I can't get the point why we should use explicit template instantiation. I thought it was used for exclitily specifying a family of classes/funtions/variables which would be used later in the program. So I tried the following example:
main.cpp
:
#include<iostream>
#include "test.h"
using std::cout;
using std::endl;
U<int> u;
int main()
{
cout << u.a << endl;
}
test.h
template<class T>
class U
{
public:
int a = 10;
};
Makefile
:
TARGET := bin
$(TARGET): main.o
g++ -g -o bin main.o
main.o: main.cpp
g++ -g -std=c++1y -c main.cpp
clean:
rm -rf *.o *.exe
And these program compiles, links and runs fine in spite of not using explicit instatiation. Couldn't you give an example where the explicit instatiation would be neccesary?