<div dir="ltr">Here is my current take on language standards<div><br></div><div>- I am working on a C++11/14 C99/11 proposal.  I despirately want to be able to use C++11 to make GDAL more robust</div><div>- As it stands I will vote >>>against<<< my proposal any time soon - until with have a bunch of proposals for changes to GDAL that require new language versions or someone rewrites my proposal to be much more compelling</div><div>- We have lots of work that we can do to make GDAL maintenance / debugging easier that does not require newer language versions</div><div>- We have successfully ( at least in my opinion ) stuck a toe in the C++11 world with CPL_FINAL, CPL_DISALLOW_COPY_ASSIGN, NULL_AS_NULLPTR, and my std::lock_guard<std::mutex> experiments.  We can probably do a bit more if we are careful.</div><div>- I think having an experimental autotest2 C++11/14 only testing tree might be the way to start.  Those who want to can try it out or look through what is possible and it won't impact the main tree or the existing C++ tests.</div><div><br></div><div><br></div><div>I would be happy to start contributing to <a href="https://trac.osgeo.org/gdal/browser/trunk/autotest2">https://trac.osgeo.org/gdal/browser/trunk/autotest2</a>, especially if we call it experimental and I can get help with adding a build system.  I have >5000 lines of C++ in 32 test files that mostly cover the port directory right now.  I got hung up on trying to create a working initial version in a separate github tree.  Adding it to the existing svn tree would get me around that issue (it's an internal work thing).  Here is cpl_string_test.cc... it's super boring. </div><div><br></div><div>   <a href="https://gist.github.com/schwehr/02128959ee78d56b553defa0a527bdf2">https://gist.github.com/schwehr/02128959ee78d56b553defa0a527bdf2</a></div><div><br></div><div>It's written using the Google C++ style guide and is based on gunit, gmock and glog.</div><div><br></div><div>- <a href="https://google.github.io/styleguide/cppguide.html">https://google.github.io/styleguide/cppguide.html</a><br></div><div>- <a href="https://github.com/google/googletest">https://github.com/google/googletest</a></div><div>- <a href="https://github.com/google/glog">https://github.com/google/glog</a></div><div><br></div><div><br></div></div><div class="gmail_extra"><br><div class="gmail_quote">On Mon, May 9, 2016 at 2:33 AM, Mateusz Loskot <span dir="ltr"><<a href="mailto:mateusz@loskot.net" target="_blank">mateusz@loskot.net</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><span class="">On 7 May 2016 at 19:10, Kurt Schwehr <<a href="mailto:schwehr@gmail.com">schwehr@gmail.com</a>> wrote:<br>
>><br>
>> If we move to a later C++ standard, or even use features of C++98 we<br>
>> currently<br>
>> don't use, I'd advocate for using things that are obviously making the<br>
>> code<br>
>> better / more readable. Honestly who finds that<br>
>> "std::unique_ptr<int *, std::function<void(char *)>> Vals(CPLCalloc(256,<br>
>> 0),<br>
>> CPLFree);" is obviously more readable, efficient and less error prone than<br>
>> "std::vector Vals(256,0)" ?<br>
>><br>
><br>
> This is cart before the horse but... as fast as I can so expect typos.  Now<br>
> just think of a ~1K long function or method with tons of instances and lots<br>
> of places to bailout successfully or as failures.  We have > 9K<br>
> free/CPLFree/CPLdelete/CPLDestroys that could be < ~100.<br>
</span>> [...]<br>
<br>
...the very long story short, your desire is to introduce the RAII idiom<br>
across GDAL codebase. Awesome!<br>
I'm sure 99% of GDAL committers will welcome this idea.<br>
Then, **next** question is how we want to implement it:<br>
using C++11+ features, home-brewed smart pointer class(es), etc.<br>
<br>
Upgrading to C++11+ just for the sake of upgrade, makes little sense to me.<br>
Especially if folks are not certain about it, don't use those features daily,<br>
don't feel comfortable...it may cause more harm.<br>
<br>
Best regards,<br>
<span class="HOEnZb"><font color="#888888">--<br>
Mateusz Loskot, <a href="http://mateusz.loskot.net" rel="noreferrer" target="_blank">http://mateusz.loskot.net</a><br>
</font></span></blockquote></div><br><br clear="all"><div><br></div>-- <br><div class="gmail_signature">--<div><a href="http://schwehr.org" target="_blank">http://schwehr.org</a></div></div>
</div>