[refwrap.common.ref] # 22 General utilities library [[utilities]](./#utilities) ## 22.10 Function objects [[function.objects]](function.objects#refwrap.common.ref) ### 22.10.6 Class template reference_wrapper [[refwrap]](refwrap#common.ref) #### 22.10.6.8 common_reference related specializations [refwrap.common.ref] [🔗](#lib:basic_common_reference) namespace std {templateconstexpr bool *is-ref-wrapper* = false; // *exposition only*templateconstexpr bool *is-ref-wrapper*> = true; templateconcept [*ref-wrap-common-reference-exists-with*](#concept:ref-wrap-common-reference-exists-with "22.10.6.8 common_­reference related specializations [refwrap.common.ref]") = // *exposition only**is-ref-wrapper* &&requires { typename common_reference_t; } &&[convertible_to](concept.convertible#concept:convertible_to "18.4.4 Concept convertible_­to [concept.convertible]")>; template class RQual, template class TQual>requires ([*ref-wrap-common-reference-exists-with*](#concept:ref-wrap-common-reference-exists-with "22.10.6.8 common_­reference related specializations [refwrap.common.ref]"), TQual> &&![*ref-wrap-common-reference-exists-with*](#concept:ref-wrap-common-reference-exists-with "22.10.6.8 common_­reference related specializations [refwrap.common.ref]"), RQual>)struct basic_common_reference {using type = common_reference_t>; }; template class TQual, template class RQual>requires ([*ref-wrap-common-reference-exists-with*](#concept:ref-wrap-common-reference-exists-with "22.10.6.8 common_­reference related specializations [refwrap.common.ref]"), TQual> &&![*ref-wrap-common-reference-exists-with*](#concept:ref-wrap-common-reference-exists-with "22.10.6.8 common_­reference related specializations [refwrap.common.ref]"), RQual>)struct basic_common_reference {using type = common_reference_t>; };}