Difference between revisions of "CPP/Templates/PartialClassSpecialization"
From ProgrammingExamples
< CPP
Daviddoria (Talk | contribs) (Created page with '==PartialClassSpecialization.cpp== <source lang="cpp"> #include <iostream> #include "Point.h" int main() { Point<int, int, double> a; Point<int, int*, 5> b; a.functio…') |
(No difference)
|
Revision as of 08:33, 6 April 2011
PartialClassSpecialization.cpp
#include <iostream> #include "Point.h" int main() { Point<int, int, double> a; Point<int, int*, 5> b; a.function1(); b.function1(); }
Point.h
#ifndef POINT_H #define POINT_H #include <iostream> #include <vector> template<typename T, typename U> class Point { void function1(); void function2(); }; template<typename T, int> class Point<T, int> { void function1(); void function2(); }; #include "Point.txx" template<typename T, typename U> void Point<T,U>::function1() { std::cout << "Primary template function1" << std::endl; } template<typename T, typename U> void Point<T,U>::function2() { std::cout << "Primary template function2" << std::endl; } ////////////////// template<class T, int> void Point<T, int>::function1() { std::cout << "Partial specialization function1" << std::endl; } #endif
Point.txx
CMakeLists.txt
Project(PartialClassSpecialization) ADD_EXECUTABLE(PartialClassSpecialization PartialClassSpecialization.cpp)