fork download
  1. #include <vector>
  2. #include <tuple>
  3. using namespace std;
  4.  
  5. struct t_none{};
  6. struct Z{struct t_impl{};};
  7. struct Y:Z{};
  8. struct X:Y{};
  9. struct A:X
  10. {
  11. struct JustForFun{struct G{};struct H{};struct J{};};
  12. struct B:JustForFun{
  13. struct t_here{};
  14. static vector<t_impl> foo();
  15. static vector<t_here> bar();
  16. static vector<t_none> baz();
  17. };
  18. };
  19. struct JustForFun{struct t_here:X{};struct G{};struct H:t_here{};struct J{};};
  20. struct Bobz:JustForFun{
  21. struct GHJ:G,H,J{
  22. static vector<t_impl> foo();
  23. static vector<t_here> bar();
  24. static vector<t_none> baz();
  25. };
  26. struct t_end{};
  27. };
  28. struct WTF:t_none{
  29. struct t_impl{};
  30. struct t_here{};
  31. struct t_beg:Bobz{
  32. static vector<int> foo();
  33. static tuple<A,t_here,int,J,G,t_impl,Y,Bobz> bar();
  34. };
  35. struct t_end{};
  36. };
  37. //impl
  38. vector<Z::t_impl> A::B::foo(){return vector<t_impl>();}
  39. vector<A::B::t_here> A::B::bar(){return vector<t_here>();}
  40. vector<t_none> A::B::baz(){return vector<t_none>();}
  41. vector<Z::t_impl> Bobz::GHJ::foo(){return vector<t_impl>();}
  42. vector<JustForFun::t_here> Bobz::GHJ::bar(){return vector<t_here>();}
  43. vector<t_none> Bobz::GHJ::baz(){return vector<t_none>();}
  44. vector<int> WTF::t_beg::foo(){return vector<int>();}
  45. tuple<A,JustForFun::t_here,int,JustForFun::J,JustForFun::G,WTF::t_impl,Y,Bobz> WTF::t_beg::bar(){
  46. return tuple<A,t_here,int,J,G,t_impl,Y,Bobz>();
  47. }
  48.  
  49. int main(){return 0;}
Success #stdin #stdout 0s 3136KB
stdin
Standard input is empty
stdout
Standard output is empty