C++11 on master (towards LO 4.5)

Stephan Bergmann sbergman at redhat.com
Tue Nov 25 00:13:36 PST 2014


Until now, our minimum C++ compiler requirements on master are:

   * Clang 3.1
   * GCC 4.6 (specifically for Munich; preferred 4.7)
   * MSVC 2012

Branch-off of LO 4.4 from master seems like a good time to re-visit. 
And natural candidates for consideration appear to be dropping MSVC 2012 
for 2013, and/or the feasibility of dropping GCC 4.6 for 4.7.

What could that buy us in terms of newly available C++ features?  Based 
on the progress from MSVC 2012 to 2013, the following list shows which 
core language features became available where:

> Feature:                                        MSVC 2012 -> 2013;  GCC        (Clang)
>
> Non-static data member initializers                No     -> Yes;   4.7        (3.0)
> Variadic templates                                 No     -> Yes;   4.3/4.4    (2.9)
> Initializer lists                                  No     -> Yes;   4.4        (3.1)
> decltype v1.0, v1.1                                v1.1** -> v1.1;  4.3/4.8.1  (2.9/3.1)
> Default template argumetns for function templates  No     -> Yes;   4.3        (2.9)
> Alias templates                                    No     -> Yes;   4.7        (3.0)
> Delegating constructors                            No     -> Yes;   4.7        (3.0)
> Explicit conversion operators                      No     -> Yes;   4.5        (3.0)
> Raw string literals                                No     -> Yes;   4.5        (3.0)
> Defaulted and deleted functions                    No     -> Yes*;  4.4        (2.9/3.0)

(Taken from <http://msdn.microsoft.com/en-us/library/hh567368.aspx> 
"Support For C++11 Features (Modern C++): Visual Studio 
2013,"<https://gcc.gnu.org/projects/cxx0x.html> "C++0x/C++11 Support in 
GCC." and <http://clang.llvm.org/cxx_status.html> "C++ Support in Clang.")

So dropping MSVC 2012 for 2013 would give us six new features:

* Variadic templates
* Initializer lists
* Default template argumetns for function templates
* Explicit conversion operators
* Raw string literals
* Defaulted and deleted functions

And additionally dropping GCC 4.6 for 4.7 would give us an additional 
three new features:

* Non-static data member initializers
* Alias templates
* Delegating constructors

Thoughts?


More information about the LibreOffice mailing list