[MacPorts] #57578: __has_feature(cxx_exceptions) returns true but fails to compile std::uncaught_exceptions()
MacPorts
noreply at macports.org
Sun Nov 11 22:25:22 UTC 2018
#57578: __has_feature(cxx_exceptions) returns true but fails to compile
std::uncaught_exceptions()
-------------------------+-------------------------------------------------
Reporter: noloader | Owner: (none)
Type: defect | Status: new
Priority: Normal | Milestone:
Component: ports | Version:
Resolution: | Keywords: C++17 cxx_exceptions
Port: | std::uncaught_exceptions()
clang++-mp-6.0 |
-------------------------+-------------------------------------------------
Description changed by noloader:
Old description:
> I'm testing C++17 on OS X 10.8.5 and 10.9.5 using Macports Clang compiler
> versions 5.0 and 6.0. Attempting to compile the following program:
>
> {{{
> $ cat test.cxx
> #if __EXCEPTIONS && __has_feature(cxx_exceptions)
> # include <exception>
> # define CXX17_EXCEPTIONS 1
> #endif
>
> void Foo()
> {
> #if defined(CXX17_EXCEPTIONS)
> if (std::uncaught_exceptions() == 0)
> #endif
> {
> int x = 0;
> }
> }
> }}}
>
> Results in:
>
> {{{
> $ /opt/local/bin/clang++-mp-5.0 -std=gnu++17 test.cxx -c
> test.cxx:9:14: error: 'uncaught_exceptions' is unavailable: introduced in
> macOS 10.12
> if (std::uncaught_exceptions() == 0)
> ^
> /opt/local/libexec/llvm-5.0/include/c++/v1/exception:130:63: note:
> 'uncaught_exceptions' has been explicitly marked unavailable here
> _LIBCPP_FUNC_VIS _LIBCPP_AVAILABILITY_UNCAUGHT_EXCEPTIONS int
> uncaught_e...
> }}}
> ^
> -std=c++17 produces the same error.
>
> According to the LLVM 3.6 release notes
> (https://releases.llvm.org/3.6.0/tools/clang/docs/ReleaseNotes.html#the-
> exceptions-macro), I believe I am using the correct feature test:
>
> To reliably test if C++ exceptions are enabled,
> use __EXCEPTIONS && __has_feature(cxx_exceptions),
> else things won’t work in all versions of Clang in
> Objective-C++ files.
>
> ==========
>
> Upstream issue report at https://bugs.llvm.org/show_bug.cgi?id=39631
>
> ==========
>
> $ /opt/local/bin/clang++-mp-6.0 --version
> clang version 6.0.1 (tags/RELEASE_601/final)
> Target: x86_64-apple-darwin13.4.0
> Thread model: posix
> InstalledDir: /opt/local/libexec/llvm-6.0/bin
>
> $ /opt/local/bin/clang++-mp-5.0 --version
> clang version 5.0.2 (tags/RELEASE_502/final)
> Target: x86_64-apple-darwin13.4.0
> Thread model: posix
> InstalledDir: /opt/local/libexec/llvm-5.0/bin
>
> $ sw_vers
> ProductName: Mac OS X
> ProductVersion: 10.9.5
> BuildVersion: 13F1911
New description:
I'm testing C++17 on OS X 10.8.5 and 10.9.5 using Macports Clang compiler
versions 5.0 and 6.0. Attempting to compile the following program:
{{{
$ cat test.cxx
#if __EXCEPTIONS && __has_feature(cxx_exceptions)
# include <exception>
# define CXX17_EXCEPTIONS 1
#endif
void Foo()
{
#if defined(CXX17_EXCEPTIONS)
if (std::uncaught_exceptions() == 0)
#endif
{
int x = 0;
}
}
}}}
Results in:
{{{
$ /opt/local/bin/clang++-mp-5.0 -std=gnu++17 test.cxx -c
test.cxx:9:14: error: 'uncaught_exceptions' is unavailable: introduced in
macOS 10.12
if (std::uncaught_exceptions() == 0)
^
/opt/local/libexec/llvm-5.0/include/c++/v1/exception:130:63: note:
'uncaught_exceptions' has been explicitly marked unavailable here
_LIBCPP_FUNC_VIS _LIBCPP_AVAILABILITY_UNCAUGHT_EXCEPTIONS int
uncaught_e...
}}}
^
-std=c++17 produces the same error.
According to the LLVM 3.6 release notes
(https://releases.llvm.org/3.6.0/tools/clang/docs/ReleaseNotes.html#the-
exceptions-macro), I believe I am using the correct feature test:
To reliably test if C++ exceptions are enabled,
use __EXCEPTIONS && __has_feature(cxx_exceptions),
else things won’t work in all versions of Clang in
Objective-C++ files.
==========
Upstream issue report at https://bugs.llvm.org/show_bug.cgi?id=39631
==========
{{{
$ /opt/local/bin/clang++-mp-6.0 --version
clang version 6.0.1 (tags/RELEASE_601/final)
Target: x86_64-apple-darwin13.4.0
Thread model: posix
InstalledDir: /opt/local/libexec/llvm-6.0/bin
$ /opt/local/bin/clang++-mp-5.0 --version
clang version 5.0.2 (tags/RELEASE_502/final)
Target: x86_64-apple-darwin13.4.0
Thread model: posix
InstalledDir: /opt/local/libexec/llvm-5.0/bin
$ sw_vers
ProductName: Mac OS X
ProductVersion: 10.9.5
BuildVersion: 13F1911
}}}
--
--
Ticket URL: <https://trac.macports.org/ticket/57578#comment:2>
MacPorts <https://www.macports.org/>
Ports system for macOS
More information about the macports-tickets
mailing list