cs440-final/track.cpp
2024-12-11 13:15:25 -05:00

32 lines
588 B
C++

#include <iostream>
#include <ostream>
// requires C++23 to compile
class A {
long long counter = 0;
public:
A() : counter{0} {}
A operator()() {
A ret = *this;
ret.counter++;
return ret;
}
// requires C++23 to compile
A operator[](int _ = 0) {
A ret = *this;
ret.counter--;
return ret;
}
friend std::ostream &operator<<(std::ostream &lhs, A const &rhs) {
lhs << rhs.counter;
return lhs;
}
};
int main(void) {
A a;
std::cout << a[] << std::endl;
std::cout << a[]() << std::endl;
std::cout << a[]()() << std::endl;
return 0;
}