Я попытался написать обобщенную версию std :: some_as , которая должна работать с любым положительным количеством аргументов типа.
Я написал следующую концепцию, сохраняя Первый параметр шаблона отделен от других параметров шаблона, потому что мне нужно было сравнить его с всеми остальными: < /p>
Я попытался написать обобщенную версию std :: some_as , которая должна работать с любым положительным количеством аргументов типа. Я написал следующую концепцию, сохраняя Первый параметр шаблона отделен от других параметров шаблона, потому что мне нужно было сравнить его с всеми остальными: < /p> [code]template concept all_same_v1 = (... && std::same_as); < /code> Однако при использовании приведенной выше концепции приведенный ниже код не компилируется на GCC и Clang, а компилируется на MSVC (ссылка Godbolt): < /p> template requires all_same_v1 void f(Ts&&... ts); < /code> Ошибка на GCC: < /p> :6:36: error: pack expansion argument for non-pack parameter 'T1' of concept 'template concept all_same_v1' 6 | template requires all_same_v1 | ^~~~~~~~~~~~~~~~~~ :3:11: note: declared here 3 | template | ^~~~~~~~ < /code> Напротив, выполнение следующей реализации O (n²) работает: < /p> template concept same_with_others = (... && std::same_as);
Мое приложение зависит от событий доступности (например, AccessibilityEvent.TYPE_WINDOW_STATE_CHANGED или AccessibilityEvent.TYPE_WINDOW_CONTENT_CHANGED) и информации в объектах AccessibiltyNodeInfo на экране, чтобы обнаружить другие используемые...
Мое приложение зависит от событий доступности (например, AccessibilityEvent.TYPE_WINDOW_STATE_CHANGED или AccessibilityEvent.TYPE_WINDOW_CONTENT_CHANGED) и информации в объектах AccessibiltyNodeInfo на экране, чтобы обнаружить другие используемые...