This attempts to make is_nothrow_constructible more robust (and efficient to compile) by not depending on is_constructible. Instead the __is_constructible intrinsic is used directly. The helper class __is_nt_constructible_impl which checks whether the construction is non-throwing now takes a bool template parameter that is substituted by the result of the instrinsic. This fixes the reported bug by not using the already-instantiated (and incorrect) value of std::is_constructible. I don't think it really fixes the problem in general, because std::is_nothrow_constructible itself could already have been instantiated in a context where it gives the wrong result. A proper fix needs to be done in the compiler. PR libstdc++/94033 * include/std/type_traits (__is_nt_default_constructible_atom): Remove. (__is_nt_default_constructible_impl): Remove. (__is_nothrow_default_constructible_impl): Remove. (__is_nt_constructible_impl): Add bool template parameter. Adjust partial specializations. (__is_nothrow_constructible_impl): Replace class template with alias template. (is_nothrow_default_constructible): Derive from alias template __is_nothrow_constructible_impl instead of __is_nothrow_default_constructible_impl. * testsuite/20_util/is_nothrow_constructible/94003.cc: New test.
Name |
Last commit
|
Last update |
---|---|---|
.. | ||
17_intro | Loading commit data... | |
18_support | Loading commit data... | |
19_diagnostics | Loading commit data... | |
20_util | Loading commit data... | |
21_strings | Loading commit data... | |
22_locale | Loading commit data... | |
23_containers | Loading commit data... | |
24_iterators | Loading commit data... | |
25_algorithms | Loading commit data... | |
26_numerics | Loading commit data... | |
27_io | Loading commit data... | |
28_regex | Loading commit data... | |
29_atomics | Loading commit data... | |
30_threads | Loading commit data... | |
abi | Loading commit data... | |
backward | Loading commit data... | |
config | Loading commit data... | |
data | Loading commit data... | |
decimal | Loading commit data... | |
experimental | Loading commit data... | |
ext | Loading commit data... | |
lib | Loading commit data... | |
libstdc++-abi | Loading commit data... | |
libstdc++-dg | Loading commit data... | |
libstdc++-prettyprinters | Loading commit data... | |
libstdc++-xmethods | Loading commit data... | |
performance | Loading commit data... | |
special_functions | Loading commit data... | |
std | Loading commit data... | |
tr1 | Loading commit data... | |
tr2 | Loading commit data... | |
util | Loading commit data... | |
Makefile.am | Loading commit data... | |
Makefile.in | Loading commit data... |