Re: Supporting C++17



On Tue, 4 Apr 2017 23:09:33 +0100
Jonathan Wakely <gtkmm kayari org> wrote:
On 4 April 2017 at 22:56, Chris Vine wrote:
I would check that.  It didn't affect ABI in C++11/14, but I am not
so sure about C++17.  According to
http://en.cppreference.com/w/cpp/language/noexcept_spec,
in C++17 "The noexcept-specification is a part of the function type
and may appear as part of any function declarator."  If it is part
of the type then it might feature in name mangling, so this is
worth checking with the compiler writers.  

In C++17 the exception spec is part of the type, so noexcept(true)
functions are mangled differently from functions that are
noexcept(false).

As I said in my follow-up email, on reflection I agree with you about
noexcept(false).

But if this is correct about noexcept(true), and I am now beginning to
doubt myself on this, then it seems a recipe for broken libraries.  It
makes any code with a noexcept(true) function specification which has
been compiled with the -std=c++14 option ABI incompatible with the same
code compiled with the -std=c++17 option.

What benefit accrues from making the noexcept specification part of
the type which is worth all that ABI breakage?


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]