@@ -140,6 +140,13 @@ using std::nullptr_t;
140140#define SQLITE_ORM_CLASSTYPE_TEMPLATE_ARGS_SUPPORTED
141141#endif
142142
143+ // clang 10 chokes on concepts that don't depend on template parameters;
144+ // when it tries to instantiate an expression in a requires expression, which results in an error,
145+ // the compiler reports an error instead of dismissing the templated function.
146+ #if defined(SQLITE_ORM_CONCEPTS_SUPPORTED) && (defined(__clang__) && (__clang_major__ == 10))
147+ #define SQLITE_ORM_BROKEN_NONTEMPLATE_CONCEPTS
148+ #endif
149+
143150#if SQLITE_ORM_HAS_INCLUDE(<version>)
144151#include <version>
145152#endif
@@ -13191,7 +13198,7 @@ namespace sqlite_orm {
1319113198#include <string>
1319213199#include <ostream>
1319313200#include <utility> // std::exchange, std::tuple_size
13194- #ifdef SQLITE_ORM_CONCEPTS_SUPPORTED
13201+ #if defined( SQLITE_ORM_CONCEPTS_SUPPORTED) && !defined(SQLITE_ORM_BROKEN_NONTEMPLATE_CONCEPTS)
1319513202#include <string_view>
1319613203#include <algorithm> // std::find
1319713204#endif
@@ -13219,7 +13226,7 @@ namespace sqlite_orm {
1321913226 template<class T, class Ctx>
1322013227 std::string serialize_order_by(const T& t, const Ctx& context);
1322113228
13222- #ifdef SQLITE_ORM_CONCEPTS_SUPPORTED
13229+ #if defined( SQLITE_ORM_CONCEPTS_SUPPORTED) && !defined(SQLITE_ORM_BROKEN_NONTEMPLATE_CONCEPTS)
1322313230 // optimized version when string_view's iterator range constructor is available
1322413231 template<class SFINAE = void>
1322513232 void stream_sql_escaped(std::ostream& os, const std::string& str, char char2Escape)
0 commit comments