Re: Supporting C++17



On 4 April 2017 at 23:37, Chris Vine wrote:
Aha, this may be it.
http://en.cppreference.com/w/cpp/language/noexcept_spec also says:
"Functions differing only in their exception specification cannot be
overloaded (just like the return type, exception specification is part
of function type, but not not part of the function signature) (since
C++17)."

So I suspect that the noexcept specification may still not affect name
mangling.

Right. See the foo and bar examples.

You can't overload like this:

void f() noexcept;
void f();

But you can overload like this:

void g(void(*)());
void g(void (*)() noexcept);

The mangled name of a function doesn't depend on its exception
specification. It does depend on the parameter types (as it always has
in all versions of C++) and the parameter types can now be affected by
exception specifications.


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