From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: by sourceware.org (Postfix, from userid 1734) id DAE053857C42; Tue, 15 Sep 2020 01:09:23 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org DAE053857C42 To: gcc-cvs-wwwdocs@gcc.gnu.org Subject: gcc-wwwdocs branch master updated. 2feaab534eb731bfc91f41b9e6f4afe9f6898828 X-Git-Refname: refs/heads/master X-Git-Reftype: branch X-Git-Oldrev: 2a1071ff337f3c060c12d3d4c65cd39cf3b01954 X-Git-Newrev: 2feaab534eb731bfc91f41b9e6f4afe9f6898828 Message-Id: <20200915010923.DAE053857C42@sourceware.org> Date: Tue, 15 Sep 2020 01:09:23 +0000 (GMT) From: Marek Polacek X-BeenThere: gcc-cvs-wwwdocs@gcc.gnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Gcc-cvs-wwwdocs mailing list List-Unsubscribe: , List-Archive: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 15 Sep 2020 01:09:24 -0000 This is an automated email from the git hooks/post-receive script. It was generated because a ref change was pushed to the repository containing the project "gcc-wwwdocs". The branch, master has been updated via 2feaab534eb731bfc91f41b9e6f4afe9f6898828 (commit) from 2a1071ff337f3c060c12d3d4c65cd39cf3b01954 (commit) Those revisions listed above that are new to this repository have not appeared on any other notification email; so we list those revisions in full, below. - Log ----------------------------------------------------------------- commit 2feaab534eb731bfc91f41b9e6f4afe9f6898828 Author: Marek Polacek Date: Mon Sep 14 21:08:09 2020 -0400 Add porting_to for GCC 11. diff --git a/htdocs/gcc-11/porting_to.html b/htdocs/gcc-11/porting_to.html new file mode 100644 index 00000000..e51285d9 --- /dev/null +++ b/htdocs/gcc-11/porting_to.html @@ -0,0 +1,82 @@ + + + + + +Porting to GCC 11 + + + + +

Porting to GCC 11

+ +

+The GCC 11 release series differs from previous GCC releases in +a number of ways. Some of these are a result +of bug fixing, and some old behaviors have been intentionally changed +to support new standards, or relaxed in standards-conforming ways to +facilitate compilation or run-time performance. +

+ +

+Some of these changes are user visible and can cause grief when +porting to GCC 11. This document is an effort to identify common issues +and provide solutions. Let us know if you have suggestions for improvements! +

+ + + + +

C++ language issues

+ +

Default standard is now GNU++17

+ +

+GCC 11 defaults to -std=gnu++17 instead of -std=gnu++14: +the C++17 standard, plus GNU extensions. +This brings several changes that users should be aware of. The following +paragraphs describe some of these changes and suggest how to deal with them. +

+ +

Some users might prefer to stay with gnu++14, in which case we suggest to +use the -std=gnu++14 command-line option, perhaps by putting it +in CXXFLAGS or similar variables in Makefiles.

+ +

Template template parameter matching changes

+

+G++, starting with +G++ 7, +implements C++17 +P0522R0, +Matching of template template-arguments excludes compatible templates. As a +consequence, the following test is now rejected: +


+    template <int N, int M = N> class A;
+    template <int N, int M> void fn(A<N, M> &) {}
+    template <int N, template <int> class TT> void fn(TT<N> &);
+    template void fn(A<3> &);
+
+ +because A is now considered a valid argument for TT, +so both function templates are valid candidates, and neither is more specialized +than the other, so it's ambiguous. +

+

+The new behavior can be disabled independently of other C++17 features with +-fno-new-ttp-matching. +

+ + + + + + + + ----------------------------------------------------------------------- Summary of changes: htdocs/gcc-11/porting_to.html | 82 +++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 82 insertions(+) create mode 100644 htdocs/gcc-11/porting_to.html hooks/post-receive -- gcc-wwwdocs