fork download
  1. #include <iostream>
  2.  
  3. struct Quad
  4. {
  5. Quad(const size_t side){ std::cout<< "build quad: "<<side<<"\n"; }
  6. };
  7.  
  8. struct Rect
  9. {
  10. Rect(const size_t w,const size_t h){ std::cout<< "build rect: "<<w<<" : "<<h<<"\n"; }
  11. };
  12.  
  13. struct Factory_figures
  14. {
  15. Factory_figures(){ count +=10; }
  16. operator Quad() { return Quad(count); }
  17. operator Rect() { return Rect(count,count); }
  18. static size_t count;
  19. };
  20. size_t Factory_figures::count=0;
  21.  
  22. template<class T>struct Figure
  23. {
  24. Figure(const T& src = Factory_figures() ){}
  25. };
  26.  
  27. int main()
  28. {
  29. Figure<Quad> f1;
  30. Figure<Quad> f2;
  31. Figure<Quad> f3;
  32. Figure<Rect> f4;
  33. Figure<Rect> f5;
  34. return 0;
  35. }
Success #stdin #stdout 0.02s 2680KB
stdin
Standard input is empty
stdout
build quad: 10
build quad: 20
build quad: 30
build rect: 40 : 40
build rect: 50 : 50