PR libstdc++/89194 untangle is_convertible and is_nothrow_convertible
authorJonathan Wakely <jwakely@redhat.com>
Tue, 5 Feb 2019 15:45:24 +0000 (15:45 +0000)
committerJonathan Wakely <redi@gcc.gnu.org>
Tue, 5 Feb 2019 15:45:24 +0000 (15:45 +0000)
commited99e818e02cd7b0c10c9e8cba7fec8ee17b0ca7
tree05d62d0809c00286cbb2770e05c70fdde6e5dfc1
parent7356fbde50dd4bfd55eaa0bed31b31da55d1461c
PR libstdc++/89194 untangle is_convertible and is_nothrow_convertible

The additional logic added to __is_convertible_helper in order to
support is_nothrow_convertible makes some uses of is_convertible
ill-formed. This appears to be due to PR c++/87603, but can be avoided
just by defining a separate helper for is_nothrow_convertible. The same
problems are likely to still exist for is_nothrow_convertible, but that
is new and so won't cause regressions for existing users of
is_convertible.

PR libstdc++/89194
* include/std/type_traits (__is_convertible_helper)
(__is_convertible_helper<_From, _To, false>): Revert changes to
support is_nothrow_convertible.
(__is_nt_convertible_helper): New helper.
(is_nothrow_convertible): Use __is_nt_convertible_helper.

From-SVN: r268543
libstdc++-v3/ChangeLog
libstdc++-v3/include/std/type_traits