<div dir="ltr">Hi all,<div class="gmail_signature"></div>
<div><br></div><div>I would like to continue the C++11 discussion over the next couple weeks while many people are on slower development cycles with a proposal:</div><div><br></div><div>* Starting 2017-Mar-01, we switch GDAL trunk to require C++11 support from the compiler.</div><div>* All prior branches would stick with their existing requirements for C++03 support</div><div><br></div><div>I had come up with a bunch of other things for a timeline, but they all see like noise after Even pointed out a whole ton of issues my thoughts.  This isn't as aggressive as I would like, but it would definitely help reduce the maintenance burden on humans and reduce the test load for continuous integration.  I removed explicit mention of OS or compiler versions which I had in my initial thoughts.</div><div><br></div><div>This would not be a free-for-all on C++11 features.  I think we would want to just start with removing some of the macros and workarounds that are currently in the code base.  Until we decide to go forward with other features, the main changes that would happen in C++ only code after this would be:</div><div><br></div><div>- Change NULL to nullptr</div><div>- Drop virtual when using the override keyword (this becomes a req with C++17)</div><div>- CPL_OVERRIDE -> override</div><div>- Remove HAVE_CXX11 #ifs</div><div>- And maybe some other things I missed</div><div><br></div><div>Once those are all done, we can then discuss when to allow things like unique_ptr internally (which will allow some serious simplification of some code).</div><div><br></div><div>Then at some later time, we can discuss what API changes to allow, when to require C++14, C++17, C11, etc.</div><div><br></div><div>Thoughts?</div><div><br></div><div>-kurt</div><div><br></div><div>e.g.</div><div><br></div><div><div>find . -name \*.cpp -o -name \*.h | xargs grep -i override | grep virtual | wc -l</div><div>    3998</div></div><div><br></div><div><div>find . -name \*.cpp -o -name \*.h | xargs grep CPL_OVERRIDE | wc -l</div><div>     712</div></div><div><br></div><div><div>find . -name \*.cpp -o -name \*.h | xargs grep HAVE_CXX11 | wc -l</div><div>      36</div></div><div><br></div></div>