← Back to Question List
C++ Code Walkthrough #99
Track Static Counters Across Template Types
📄 Code
Read carefully — what does this print?1#include <iostream>23template <typename T>4class Tracker {5 T m_value;6public:7 static int created;8 Tracker(T value) : m_value(value) { created++; }9 T value() const { return m_value; }10};1112template <typename T>13int Tracker<T>::created = 0;1415int main() {16 Tracker<int> a(1);17 Tracker<double> b(2.5);18 Tracker<int> c(3);19 std::cout << Tracker<int>::created << " " << Tracker<double>::created << " " << Tracker<char>::created << "\n";20 Tracker<char> d('x');21 Tracker<int> e(5);22 std::cout << Tracker<int>::created << " " << Tracker<double>::created << " " << Tracker<char>::created << "\n";23 Tracker<double> f(b.value() * 2);24 Tracker<int> g(a.value() + e.value());25 std::cout << Tracker<int>::created << " " << Tracker<double>::created << " " << Tracker<char>::created << "\n";26 std::cout << f.value() << " " << g.value() << " " << d.value() << " " << c.value() << "\n";27 return 0;28}