code: def test_domain_cpp_ast_requires_clauses():
      check(
          "function",
          "template<typename T> requires A auto f() -> void requires B",
          {4: "I0EIQaa1A1BE1fvv"},
      )
      check(
          "function",
          "template<typename T> requires A || B or C void f()",
          {4: "I0EIQoo1Aoo1B1CE1fvv"},
      )
      check(
          "function",
          "void f() requires A || B || C",
          {4: "IQoo1Aoo1B1CE1fv"},
      )
      check(
          "function",
          "Foo() requires A || B || C",
          {4: "IQoo1Aoo1B1CE3Foov"},
      )
      check(
          "function",
          "template<typename T> requires A && B || C and D void f()",
          {4: "I0EIQooaa1A1Baa1C1DE1fvv"},
      )
      check(
          "function",
          "template<typename T> requires R<T> "
          + "template<typename U> requires S<T> "
          + "void A<T>::f() requires B",
          {4: "I0EIQ1RI1TEEI0EIQaa1SI1TE1BEN1A1fEvv"},
      )
      check(
          "function",
          "template<template<typename T> requires R<T> typename X> "
          + "void f()",
          {2: "II0EIQ1RI1TEE0E1fv", 4: "II0EIQ1RI1TEE0E1fvv"},
      )
      check(
          "type",
          "template<typename T> requires IsValid<T> {key}T = true_type",
          {4: "I0EIQ7IsValidI1TEE1T"},
          key="using",
      )
      check(
          "class",
          "template<typename T> requires IsValid<T> {key}T : Base",
          {4: "I0EIQ7IsValidI1TEE1T"},
          key="class",
      )
      check(
          "union",
          "template<typename T> requires IsValid<T> {key}T",
          {4: "I0EIQ7IsValidI1TEE1T"},
          key="union",
      )
      check(
          "member",
          "template<typename T> requires IsValid<T> int Val = 7",
          {4: "I0EIQ7IsValidI1TEE3Val"},
      )
  
imports: import itertools
  import re
  import zlib
  import pytest
  import sphinx.domains.cpp
  from sphinx import addnodes
  from sphinx.addnodes import desc, desc_content, desc_name, desc_parameter, desc_parameterlist, desc_sig_name, desc_sig_space, desc_signature, desc_signature_line, pending_xref
  from sphinx.domains.cpp import DefinitionError, DefinitionParser, NoOldIdError, Symbol, _id_prefix, _max_id
  from sphinx.ext.intersphinx import load_mappings, normalize_intersphinx_mapping
  from sphinx.testing import restructuredtext
  from sphinx.testing.util import assert_node
  from sphinx.writers.text import STDINDENT
label_desc: Use image node_id 18 for calling a global function with example usage: test_domain_cpp_ast_requires_clauses() without return types