#include #include namespace guide { inline unsigned visits = 0; inline unsigned next() { return ++visits; } template T larger(T a, T b) { return a < b ? b : a; } } unsigned* from_a() { return &guide::visits; } unsigned* from_b() { return &guide::visits; } int main() { assert(from_a() == from_b()); const auto first = guide::next(); const auto second = guide::next(); assert(first == 1u && second == 2u); assert(*from_a() == 2u); assert(guide::larger(3, 7) == 7); std::cout << guide::visits << '\n'; }