CJCoding With Joseph
15free / daySign inCreate account
← Back to Question List
C++ Code Walkthrough #99

Track Static Counters Across Template Types

hardTemplates

📄 Code

Read carefully — what does this print?
1#include <iostream>
2 
3template <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};
11 
12template <typename T>
13int Tracker<T>::created = 0;
14 
15int 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}

🎯 Your Answer