fork download
  1. #include <cstdio>
  2. #include <deque>
  3. #include <queue>
  4.  
  5. template<typename E, typename C = std::deque<E>>
  6. struct facker
  7. {
  8. using Q = std::queue<E, C>;
  9.  
  10. struct unko : Q
  11. {
  12. C & c2;
  13.  
  14. unko() noexcept : c2{ this->Q::c }
  15. {
  16. }
  17. };
  18.  
  19. Q & original_queue;
  20. unko peeper;
  21.  
  22. facker( Q & q ) : original_queue{ q }
  23. {
  24. this->original_queue.swap( this->peeper );
  25. }
  26.  
  27. ~facker()
  28. {
  29. this->original_queue.swap( this->peeper );
  30. }
  31. };
  32.  
  33. auto main() -> int
  34. {
  35. std::queue<double> q;
  36. for ( auto i = 0; i < 5; i++ )
  37. q.push( static_cast<double>( i ) );
  38.  
  39. {
  40. facker<double> f{ q };
  41.  
  42. for ( auto & elem : f.peeper.c2 )
  43. std::printf( "%.1lf\n", elem );
  44. }
  45. }
  46.  
Success #stdin #stdout 0s 3232KB
stdin
Standard input is empty
stdout
0.0
1.0
2.0
3.0
4.0