Note that there are some explanatory texts on larger screens.

plurals
  1. POCan you swap a std::queue with a lambda comparator?
    primarykey
    data
    text
    <p>I am trying to clear a std::queue using the example in <a href="https://stackoverflow.com/a/709161/837451">https://stackoverflow.com/a/709161/837451</a> via a swap. However, it doesn't seem to work with a lambda comparator due to the "deleted function" error.</p> <p>Minimal <del>working</del> failing example:</p> <pre><code>#include &lt;queue&gt; #include &lt;vector&gt; using namespace std; int main(){ typedef pair&lt;int,float&gt; ifpair; auto comp = []( ifpair a, ifpair b ) { return a.second &gt; b.second; }; typedef priority_queue&lt; ifpair , vector&lt;ifpair&gt;, decltype( comp ) &gt; t_npq; t_npq npq( comp ); //do something with npq. finish using it (without emptying it) and clear for next round t_npq empty( comp ); swap(npq , empty); } </code></pre> <p>Compile with</p> <pre><code>g++ -std=c++11 /tmp/test.cpp -o /tmp/o </code></pre> <p>And I get the following error:</p> <pre><code>/usr/include/c++/4.8/bits/move.h:176:11: error: use of deleted function ‘main()::__lambda0&amp; main()::__lambda0::operator=(const main()::__lambda0&amp;)’ __a = _GLIBCXX_MOVE(__b); ^ /tmp/test.cpp:6:18: note: a lambda closure type has a deleted copy assignment operator </code></pre> <p>g++ -v</p> <pre><code>Using built-in specs. COLLECT_GCC=g++ COLLECT_LTO_WRAPPER=/usr/lib/gcc/x86_64-linux-gnu/4.8/lto-wrapper Target: x86_64-linux-gnu Configured with: ../src/configure -v --with-pkgversion='Ubuntu/Linaro 4.8.1-10ubuntu9' --with-bugurl=file:///usr/share/doc/gcc-4.8/README.Bugs --enable-languages=c,c++,java,go,d,fortran,objc,obj-c++ --prefix=/usr --program-suffix=-4.8 --enable-shared --enable-linker-build-id --libexecdir=/usr/lib --without-included-gettext --enable-threads=posix --with-gxx-include-dir=/usr/include/c++/4.8 --libdir=/usr/lib --enable-nls --with-sysroot=/ --enable-clocale=gnu --enable-libstdcxx-debug --enable-libstdcxx-time=yes --enable-gnu-unique-object --enable-plugin --with-system-zlib --disable-browser-plugin --enable-java-awt=gtk --enable-gtk-cairo --with-java-home=/usr/lib/jvm/java-1.5.0-gcj-4.8-amd64/jre --enable-java-home --with-jvm-root-dir=/usr/lib/jvm/java-1.5.0-gcj-4.8-amd64 --with-jvm-jar-dir=/usr/lib/jvm-exports/java-1.5.0-gcj-4.8-amd64 --with-arch-directory=amd64 --with-ecj-jar=/usr/share/java/eclipse-ecj.jar --enable-objc-gc --enable-multiarch --disable-werror --with-arch-32=i686 --with-abi=m64 --with-multilib-list=m32,m64,mx32 --with-tune=generic --enable-checking=release --build=x86_64-linux-gnu --host=x86_64-linux-gnu --target=x86_64-linux-gnu Thread model: posix gcc version 4.8.1 (Ubuntu/Linaro 4.8.1-10ubuntu9) </code></pre> <p>I'm kind of curious what exactly is going on here but more importantly I would really like to know how to make this work.</p>
    singulars
    1. This table or related slice is empty.
    plurals
    1. This table or related slice is empty.
    1. This table or related slice is empty.
 

Querying!

 
Guidance

SQuiL has stopped working due to an internal error.

If you are curious you may find further information in the browser console, which is accessible through the devtools (F12).

Reload