1
0
mirror of https://github.com/Kitware/CMake.git synced 2025-10-15 03:48:02 +08:00

cmCMakePath: do not use std::filesystem::path with RH gcc-toolset-10

Fixes: #25458, #25453
This commit is contained in:
Marc Chevrier
2023-12-02 18:13:01 +01:00
parent b9970be9bc
commit 40af103402

View File

@@ -1,5 +1,8 @@
#include <filesystem>
#if defined(__GLIBCXX__)
# include <string_view>
#endif
int main()
{
@@ -34,5 +37,30 @@ int main()
p5.remove_filename();
#endif
#if defined(__GLIBCXX__)
// RH gcc-toolset-10 has a strange bug: it selects, in some circumstances,
// the wrong constructor which generate error in template instantiation.
class my_string_view : std::string_view
{
public:
my_string_view(const char* p)
: std::string_view(p)
{
}
};
class my_path
{
public:
my_path(std::filesystem::path path) {}
my_path(my_string_view path) {}
};
my_path p{ my_string_view{ "abc" } };
// here is the bug: the constructor taking std::filesystem::path as argument
// is selected, so the compiler try to build a std::filesystem::path instance
// from the my_string_view argument and fails to do so.
#endif
return 0;
}