From d0f3f64bb42ea8194c20f0eadd35821cab346143 Mon Sep 17 00:00:00 2001 From: Sebastiano Tronto Date: Fri, 17 Jan 2025 07:52:02 +0100 Subject: Started work on templates article --- templates/pair.cpp | 35 +++++++++++++++++++++++++++++++++++ 1 file changed, 35 insertions(+) create mode 100644 templates/pair.cpp (limited to 'templates/pair.cpp') diff --git a/templates/pair.cpp b/templates/pair.cpp new file mode 100644 index 0000000..42b97c9 --- /dev/null +++ b/templates/pair.cpp @@ -0,0 +1,35 @@ +#include + +template +class Pair { +public: + S first; + T second; + + Pair(S s, T t) : first{s}, second{t} {} + + void print() const { + std::cout << "(" << first << ", " << second << ")"; + } +}; + +int main() { + Pair p(42, 'x'); + p.second = 'y'; + + std::cout << "p ="; + p.print(); + std::cout << std::endl; + + Pair q(1.23, 7); // template argument deduction + + std::cout << "q ="; + q.print(); + std::cout << std::endl; + + std::cout << "int type name: " << typeid(7).name() << std::endl; + std::cout << "char type name: " << typeid('x').name() << std::endl; + std::cout << "double type name: " << typeid(1.23).name() << std::endl; + std::cout << "Type of p: " << typeid(p).name() << std::endl; + std::cout << "Type of q: " << typeid(q).name() << std::endl; +} -- cgit v1.3