Clang versions 15-17 support C++20, but they cannot compile this code snippet:
/opt/local/var/macports/build/i2pd-4aaadd19/work/i2pd-2.60.0/libi2pd/util.cpp:319:30: error: no viable conversion from 'std::string_view' (aka 'basic_string_view<char>') to 'const key_type' (aka 'const std::basic_string<char>')
return m_Options.contains (param);
^~~~~
This is the only solution that works; it's already used in MacPorts (macports/macports-ports#32457):
--- libi2pd/util.cpp
+++ libi2pd/util.cpp
@@ -315,7 +315,7 @@ namespace util
bool Mapping::Contains (std::string_view param) const
{
-#if __cplusplus >= 202002L // C++20
+#if !defined(__clang__) && (__cplusplus >= 202002L) // C++20
return m_Options.contains (param);
#else
auto it = m_Options.find (param);
Clang versions 15-17 support C++20, but they cannot compile this code snippet:
This is the only solution that works; it's already used in MacPorts (macports/macports-ports#32457):