aboutsummaryrefslogtreecommitdiff
path: root/gcc/ada/gcc-interface/misc.c
diff options
context:
space:
mode:
authorJonathan Wakely <jwakely@redhat.com>2020-05-23 07:28:40 +0100
committerJonathan Wakely <jwakely@redhat.com>2020-05-23 09:40:16 +0100
commit988b853f9c829742907ae22ac66de56facfc7bc5 (patch)
tree83dcecec62b21816b1a8e80811540a07be15bd3e /gcc/ada/gcc-interface/misc.c
parent804254edb48f87d726a1bc9e95af04076c030e35 (diff)
downloadgcc-988b853f9c829742907ae22ac66de56facfc7bc5.zip
gcc-988b853f9c829742907ae22ac66de56facfc7bc5.tar.gz
gcc-988b853f9c829742907ae22ac66de56facfc7bc5.tar.bz2
libstdc++: Simplify filesystem::path SFINAE constraints
This replaces the filesystem::__detail::_Path SFINAE helper with two separate helpers, _Path and _Path2. This avoids having one helper which tries to check two different sets of requirements. The _Path helper now uses variable templates instead of a set of overloaded functions to detect specializations of basic_string or basic_string_view. The __not_<is_void<remove_pointer_t<_Tp1>> check is not necessary in C++20 because iterator_traits<void*> is now empty. For C++17 replace that check with a __safe_iterator_traits helper with partial specializations for void pointers. Finally, the __is_encoded_char check no longer uses remove_const_t, which means that iterators with a const value_type will no longer be accepted as arguments for path creation. Such iterators resulted in undefined behaviour anyway, so it's still conforming to reject them in the constraint checks. * include/bits/fs_path.h (filesystem::__detail::__is_encoded_char): Replace alias template with variable template. Don't remove const. (filesystem::__detail::__is_path_src): Replace overloaded function template with variable template and specializations. (filesystem::__detail::__is_path_iter_src): Replace alias template with class template. (filesystem::__detail::_Path): Use __is_path_src. Remove support for iterator pairs. (filesystem::__detail::_Path2): New alias template for checking InputIterator requirements. (filesystem::__detail::__constructible_from): Remove. (filesystem::path): Replace _Path<Iter, Iter> with _Path2<Iter>. * testsuite/27_io/filesystem/path/construct/80762.cc: Check with two constructor arguments of void and void* types.
Diffstat (limited to 'gcc/ada/gcc-interface/misc.c')
0 files changed, 0 insertions, 0 deletions