//: C05:Exercise4.cpp {-xo} class Noncomparable {}; struct HardLogic { Noncomparable nc1, nc2; void compare() { return nc1 == nc2; // Compiler error } }; template<class T> struct SoftLogic { Noncomparable nc1, nc2; void noOp() {} void compare() { nc1 == nc2; } }; int main() { SoftLogic<Noncomparable> l; l.noOp(); } ///:~
Listado 6.62. C05/Exercise4.cpp
//: C05:Exercise7.cpp {-xo} class Buddy {}; template<class T> class My { int i; public: void play(My<Buddy>& s) { s.i = 3; } }; int main() { My<int> h; My<Buddy> me, bud; h.play(bud); me.play(bud); } ///:~
Listado 6.63. C05/Exercise7.cpp
//: C05:Exercise8.cpp {-xo} template<class T> double pythag(T a, T b, T c) { return (-b + sqrt(double(b*b - 4*a*c))) / 2*a; } int main() { pythag(1, 2, 3); pythag(1.0, 2.0, 3.0); pythag(1, 2.0, 3.0); pythag<double>(1, 2.0, 3.0); } ///:~
Listado 6.64. C05/Exercise8.cpp