#include <cstdio>
#include <deque>
#include <queue>
template<typename E, typename C = std::deque<E>>
struct facker
{
using Q = std::queue<E, C>;
struct unko : Q
{
C & c2;
unko() noexcept : c2{ this->Q::c }
{
}
};
Q & original_queue;
unko peeper;
facker( Q & q ) : original_queue{ q }
{
this->original_queue.swap( this->peeper );
}
~facker()
{
this->original_queue.swap( this->peeper );
}
};
auto main() -> int
{
std::queue<double> q;
for ( auto i = 0; i < 5; i++ )
q.push( static_cast<double>( i ) );
{
facker<double> f{ q };
for ( auto & elem : f.peeper.c2 )
std::printf( "%.1lf\n", elem );
}
}
I2luY2x1ZGUgPGNzdGRpbz4KI2luY2x1ZGUgPGRlcXVlPgojaW5jbHVkZSA8cXVldWU+Cgp0ZW1wbGF0ZTx0eXBlbmFtZSBFLCB0eXBlbmFtZSBDID0gc3RkOjpkZXF1ZTxFPj4Kc3RydWN0IGZhY2tlcgp7Cgl1c2luZyBRID0gc3RkOjpxdWV1ZTxFLCBDPjsKCglzdHJ1Y3QgdW5rbyA6IFEKCXsKCQlDICYgYzI7CgoJCXVua28oKSBub2V4Y2VwdCA6IGMyeyB0aGlzLT5ROjpjIH0KCQl7CgkJfQoJfTsKCglRICYgb3JpZ2luYWxfcXVldWU7Cgl1bmtvIHBlZXBlcjsKCglmYWNrZXIoIFEgJiBxICkgOiBvcmlnaW5hbF9xdWV1ZXsgcSB9Cgl7CgkJdGhpcy0+b3JpZ2luYWxfcXVldWUuc3dhcCggdGhpcy0+cGVlcGVyICk7Cgl9CgoJfmZhY2tlcigpCgl7CgkJdGhpcy0+b3JpZ2luYWxfcXVldWUuc3dhcCggdGhpcy0+cGVlcGVyICk7Cgl9Cn07CgphdXRvIG1haW4oKSAtPiBpbnQKewoJc3RkOjpxdWV1ZTxkb3VibGU+IHE7Cglmb3IgKCBhdXRvIGkgPSAwOyBpIDwgNTsgaSsrICkKCQlxLnB1c2goIHN0YXRpY19jYXN0PGRvdWJsZT4oIGkgKSApOwoKCXsKCQlmYWNrZXI8ZG91YmxlPiBmeyBxIH07CgoJCWZvciAoIGF1dG8gJiBlbGVtIDogZi5wZWVwZXIuYzIgKQoJCQlzdGQ6OnByaW50ZiggIiUuMWxmXG4iLCBlbGVtICk7Cgl9Cn0K