Skip to content

error: no viable conversion from 'std::string_view' (aka 'basic_string_view<char>') to 'const key_type' (aka 'const std::basic_string<char>') #2380

@aeiouaeiouaeiouaeiouaeiouaeiou

Description

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);

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions