<html><head></head><body style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space; "><br><div><div>On Feb 4, 2011, at 11:54 AM, Larry Evans wrote:</div><br class="Apple-interchange-newline"><blockquote type="cite"><div>On 02/04/11 13:38, Douglas Gregor wrote:<br><blockquote type="cite"><br></blockquote><blockquote type="cite">On Feb 4, 2011, at 11:33 AM, Larry Evans wrote:<br></blockquote><blockquote type="cite"><br></blockquote><blockquote type="cite"><blockquote type="cite">On 01/26/11 15:45, Douglas Gregor wrote:<br></blockquote></blockquote><blockquote type="cite"><blockquote type="cite"><blockquote type="cite">Clang has recently gotten much-improved support for the upcoming<br></blockquote></blockquote></blockquote><blockquote type="cite"><blockquote type="cite"><blockquote type="cite">C++0x standard. In particular, top-of-tree Clang now supports a<br></blockquote></blockquote></blockquote><blockquote type="cite"><blockquote type="cite"><blockquote type="cite">number of C++0x features:<br></blockquote></blockquote></blockquote><blockquote type="cite"><blockquote type="cite"><blockquote type="cite"><br></blockquote></blockquote></blockquote><blockquote type="cite"><blockquote type="cite"><blockquote type="cite">- Rvalue references (including rvalue references for *this)<br></blockquote></blockquote></blockquote><blockquote type="cite"><blockquote type="cite"><blockquote type="cite">- Variadic templates<br></blockquote></blockquote></blockquote><blockquote type="cite"><blockquote type="cite"><blockquote type="cite">- Inline namespaces<br></blockquote></blockquote></blockquote><blockquote type="cite"><blockquote type="cite"><blockquote type="cite">- Late-specified return types<br></blockquote></blockquote></blockquote><blockquote type="cite"><blockquote type="cite"><blockquote type="cite">- Decltype<br></blockquote></blockquote></blockquote><blockquote type="cite"><blockquote type="cite"><blockquote type="cite"><br></blockquote></blockquote></blockquote><blockquote type="cite"><blockquote type="cite"><blockquote type="cite">You can turn on C++0x support with the -std=gnu++0x (or, if you want<br></blockquote></blockquote></blockquote><blockquote type="cite"><blockquote type="cite"><blockquote type="cite">to be more pedantic, -std=c++0x).<br></blockquote></blockquote></blockquote><blockquote type="cite"><blockquote type="cite"><blockquote type="cite"><br></blockquote></blockquote></blockquote><blockquote type="cite"><blockquote type="cite"><blockquote type="cite">Give it a spin, write some tests, try it out with libc++, and tell us<br></blockquote></blockquote></blockquote><blockquote type="cite"><blockquote type="cite"><blockquote type="cite">how it went! And if you get the itch to hack on Clang, there are a<br></blockquote></blockquote></blockquote><blockquote type="cite"><blockquote type="cite"><blockquote type="cite">ton of other little C++0x features that you could implement.<br></blockquote></blockquote></blockquote><blockquote type="cite"><blockquote type="cite"><blockquote type="cite"><br></blockquote></blockquote></blockquote><blockquote type="cite"><blockquote type="cite"><blockquote type="cite">Cheers,<br></blockquote></blockquote></blockquote><blockquote type="cite"><blockquote type="cite"><blockquote type="cite">Doug<br></blockquote></blockquote></blockquote><blockquote type="cite"><blockquote type="cite"><br></blockquote></blockquote><blockquote type="cite"><blockquote type="cite">How do I get the attached to compile without the<br></blockquote></blockquote><blockquote type="cite"><blockquote type="cite">following error about no std::move?<br></blockquote></blockquote><blockquote type="cite"><blockquote type="cite"><br></blockquote></blockquote><blockquote type="cite"><blockquote type="cite">/home/evansl/download/llvm/svn/build/Debug+Asserts/bin/clang++ -c<br></blockquote></blockquote><blockquote type="cite"><blockquote type="cite">-std=c++0x -U__GXX_EXPERIMENTAL_CXX0X__ -c -std=c++0x move.cpp<br></blockquote></blockquote><blockquote type="cite"><blockquote type="cite">move.cpp:6:16: error: no member named 'move' in namespace 'std'<br></blockquote></blockquote><blockquote type="cite"><blockquote type="cite">   int j=std::move(i);<br></blockquote></blockquote><blockquote type="cite"><blockquote type="cite">         ~~~~~^<br></blockquote></blockquote><blockquote type="cite"><br></blockquote><blockquote type="cite">I suggest following the preprocessor logic to see what std::move isn't<br></blockquote><blockquote type="cite">getting defined. That -U__GXX_EXPERIMENTAL_CXX0X__ looks really, really<br></blockquote><blockquote type="cite">suspicious, though.<br></blockquote><br>The -U is there because, without it, the errors begin with:<br><br>/home/evansl/download/llvm/svn/build/Debug+Asserts/bin/clang++ -c<br>-std=c++0x -c -std=c++0x move.cpp<br>In file included from move.cpp:1:<br>In file included from /usr/include/c++/4.4/memory:48:<br>In file included from /usr/include/c++/4.4/bits/stl_algobase.h:66:<br>In file included from /usr/include/c++/4.4/bits/stl_pair.h:60:<br>In file included from /usr/include/c++/4.4/bits/move.h:38:<br>In file included from /usr/include/c++/4.4/type_traits:50:<br>/usr/include/c++/4.4/tr1_impl/type_traits:233:29: error: type qualifier<br>is not allowed on this function<br>    struct is_function<_Res(_ArgTypes...) const><br></div></blockquote></div><br><div>FWIW, I implemented this extension in Clang shortly after you posted this.</div><div><br></div><div><span class="Apple-tab-span" style="white-space:pre">        </span>- Doug</div></body></html>