This is the mail archive of the libstdc++@gcc.gnu.org mailing list for the libstdc++ project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: [PATCH] PR libstdc++/80762 avoid ambiguous __constructible_from<void, void>


On 13/12/18 08:56 +0100, Christophe Lyon wrote:
On Wed, 12 Dec 2018 at 17:13, Jonathan Wakely <jwakely@redhat.com> wrote:

Ensure we don't try to instantiate __is_constructible_from<void, void>,
because there are two partial specializations that are equally good
matches.

        PR libstdc++/80762
        * include/bits/fs_path.h (path::_Path): Use remove_cv_t and is_void.
        * include/experimental/bits/fs_path.h (path::_Path): Likewise.
        * testsuite/27_io/filesystem/path/construct/80762.cc: New test.
        * testsuite/experimental/filesystem/path/construct/80762.cc: New test.


Hi Jonathan,

One of the new tests fails on bare-metal/newlib targets (aarch64-elf/arm-eabi):
FAIL: experimental/filesystem/path/construct/80762.cc (test for excess errors)
/libstdc++-v3/testsuite/experimental/filesystem/path/construct/80762.cc:20:
fatal error: experimental/filesystem: No such file or directory

I think there was a similar issue recently, but I don't remember how
you fixed it?

Like this. Sorry for forgetting it. Committed to trunk.

Aside:
There's actually no reason the filesystem::path type can't be enabled
unconditionally for all targets, as it only relies on portable
features like std::string, but currently the definitions of its member
functions are in the libstdc++fs.a library which is only enabled
conditionally. Later today I plan to move the std::filesystem::path
type into the main libstdc++.so library, so only the tests for
std::experimental::filesystem::path will depend on libstdc++fs.a being
available. Until then, this patch is needed.


commit e9d4b85b9d8f91743617729d0a1e6a9f9a39e37d
Author: Jonathan Wakely <jwakely@redhat.com>
Date:   Thu Dec 13 10:56:46 2018 +0000

    Disable new tests for configurations with no libstdc++fs.a
    
            * testsuite/27_io/filesystem/path/construct/80762.cc: Skip test if
            the Filesystem TS support is not configured.
            * testsuite/experimental/filesystem/path/construct/80762.cc: Likewise.

diff --git a/libstdc++-v3/testsuite/27_io/filesystem/path/construct/80762.cc b/libstdc++-v3/testsuite/27_io/filesystem/path/construct/80762.cc
index 15a79fd4e12..0137e4466d0 100644
--- a/libstdc++-v3/testsuite/27_io/filesystem/path/construct/80762.cc
+++ b/libstdc++-v3/testsuite/27_io/filesystem/path/construct/80762.cc
@@ -17,6 +17,7 @@
 
 // { dg-options "-std=gnu++17" }
 // { dg-do compile { target c++17 } }
+// { dg-require-filesystem-ts "" }
 
 #include <filesystem>
 
diff --git a/libstdc++-v3/testsuite/experimental/filesystem/path/construct/80762.cc b/libstdc++-v3/testsuite/experimental/filesystem/path/construct/80762.cc
index fdd9f768f78..84ea48b11b1 100644
--- a/libstdc++-v3/testsuite/experimental/filesystem/path/construct/80762.cc
+++ b/libstdc++-v3/testsuite/experimental/filesystem/path/construct/80762.cc
@@ -16,6 +16,7 @@
 // <http://www.gnu.org/licenses/>.
 
 // { dg-do compile { target c++11 } }
+// { dg-require-filesystem-ts "" }
 
 #include <experimental/filesystem>
 

Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]