<div dir="ltr">Hi Nick,<div><br></div><div>[...]<div class="gmail_extra"><div class="gmail_quote"><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div class="im">
<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
I would even go so far as to say it's silly to not use C++11 since it's<br>
such a major improvement over previous C++ versions, in both performance<br>
</blockquote>
<br></div>
I'm curious, why does it perform better?</blockquote><div><br></div><div>I'm putting words in Matthews mouth here, but things like move semantics can reduce the need for allocations and copying, but like all such "performance improvements" it needs to be used a zillion times before it matters, and well, Geany does few things a zillion times (except inside Scintilla's rendering code).</div>
<div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div class="im"><br>
<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
and readability/coder-friendliness and it's well supported on current<br>
compilers and platforms.<br>
</blockquote>
<br></div>
Is it? I hadn't heard that, maybe. But I bet it will cause problems for some distro maintainers/builders on LTS distros.<br></blockquote><div><br></div><div>Many of the simpler but useful parts of C++11 seem to have been implemented in many compilers a while ago, and most compilers now seem to be at, or close to, standards compliance, but as you say LTS systems are not going to support C++11 for a while yet.  For example gcc 4.6 (the oldest supported version) does some stuff under the banner of C++0x and I'm happily using C++11 with gcc 4.7 without problems, a bit behind the 4.9 latest development version.</div>
<div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
<br>
Readability is definitely better in C++11 when avoiding iterators and using lambdas, but I was kind of hoping we could avoid those ugly cases. I wasn't thinking of using the STL heavily, just a few containers like string, and perhaps others for any specialized use cases.<br>
</blockquote><div><br></div><div>Sadly, containers means iterators, inevitably, and yes C++03 syntax is ugly, but you get used to it, and just type it automatically. Pity "auto" and "for( a: container )" is C++11, oh well.</div>
<div><br></div><div> [...]</div><div><br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
I proposed banning OOP, operator overloading and exceptions in src to make it (much?) easier to understand & maintain the code vs idiomatic C++, with all its unintuitive bug-prone corner cases (which are still in C++11), see my reply to Lex for more info.<div class="im">
<br></div></blockquote><div><br></div><div>Looking at it again, I'm not sure we mean the same thing by OOP, its a much abused and overloaded term, could you perhaps explain your meaning?  Depending on what you mean, banning it is either sensible, or the silliest idea ever :)</div>
<div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div class="im">
<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
Maybe rather than bikeshed about it too much, we can wait until someone<br>
wants to add a new module, or replace an existing module (I'm looking at<br>
you TM!), or some actual use case, at which point we could discuss<br>
whether it makes sense to use C++ for it, and since we already use C++<br>
for Scintilla, it's not a huge change to use it in another new C++<br>
module with respect to the build systems and stuff.<br>
</blockquote>
<br></div>
Yes, or maybe convert a core plugin that uses strings a lot, so we get the benefit of RAII. I might look into it unless Colomban is against that (even for a core plugin).</blockquote><div><br></div><div>Good idea, plugins can be written in C++ now, without any changes to Geany being needed.  Just make sure you don't leak exceptions (unless you mean to) since they currently mean terminate().</div>
<div><br></div><div>Cheers</div><div>Lex</div></div></div></div></div>