diff options
author | Brad King <brad.king@kitware.com> | 2023-12-05 14:29:36 (GMT) |
---|---|---|
committer | Kitware Robot <kwrobot@kitware.com> | 2023-12-05 14:29:45 (GMT) |
commit | 0e7ef08e1051cd58fc0f19c6759cd655dedd7206 (patch) | |
tree | 247f885fc65dd63adffc2b20e4c4ce001f950880 /Source/Checks | |
parent | 21e30404cdd32c11683730aaa264e34ee01eaf05 (diff) | |
parent | 40af103402b1a6f2d19f7531dfacb23010225392 (diff) | |
download | CMake-0e7ef08e1051cd58fc0f19c6759cd655dedd7206.zip CMake-0e7ef08e1051cd58fc0f19c6759cd655dedd7206.tar.gz CMake-0e7ef08e1051cd58fc0f19c6759cd655dedd7206.tar.bz2 |
Merge topic 'RH-gcc-toolset-10-bug-check'
40af103402 cmCMakePath: do not use std::filesystem::path with RH gcc-toolset-10
Acked-by: Kitware Robot <kwrobot@kitware.com>
Acked-by: buildbot <buildbot@kitware.com>
Merge-request: !9026
Diffstat (limited to 'Source/Checks')
-rw-r--r-- | Source/Checks/cm_cxx_filesystem.cxx | 28 |
1 files changed, 28 insertions, 0 deletions
diff --git a/Source/Checks/cm_cxx_filesystem.cxx b/Source/Checks/cm_cxx_filesystem.cxx index 732f28f..c8df589 100644 --- a/Source/Checks/cm_cxx_filesystem.cxx +++ b/Source/Checks/cm_cxx_filesystem.cxx @@ -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; } |