fork(1) download
  1. #include <iostream>
  2.  
  3. int a = 0;
  4.  
  5. template<
  6. class T
  7. >
  8. class Scriptable {
  9. protected:
  10. struct Proxy
  11. {
  12. Proxy() {
  13. std::cout << "Proxy was executed! ID: " << T::id << std::endl;
  14. a++;
  15. }
  16. };
  17. static Proxy proxy_;
  18. } ;
  19.  
  20. template<
  21. class T
  22. >
  23. typename Scriptable<T>::Proxy Scriptable<T>::proxy_;
  24.  
  25. class Object : public Scriptable<Object> {
  26. public:
  27. constexpr static auto id = "[Object]";
  28. } ;
  29.  
  30. int main() {
  31. std::cout << "Done " << a << std::endl;
  32. }
  33.  
Success #stdin #stdout 0s 3296KB
stdin
Standard input is empty
stdout
Done 0