template<class... T>
static constexpr bool is-invocable-using = see below;
template<class F>
static constexpr bool is-convertible-from-specialization = see below;
template<class F> function_ref(F* f) noexcept;
template<class F> constexpr function_ref(F&& f) noexcept;
template<auto c, class F> constexpr function_ref(constant_wrapper<c, F> f) noexcept;
template<auto c, class F, class U>
constexpr function_ref(constant_wrapper<c, F> f, U&& obj) noexcept;
template<auto c, class F>
constexpr function_ref(constant_wrapper<c, F> f, cv T* obj) noexcept;
template<class T> function_ref& operator=(T) = delete;
R operator()(ArgTypes... args) const noexcept(noex);
template<class F>
function_ref(F*) -> function_ref<F>;
template<auto c, class F0>
function_ref(constant_wrapper<c, F0>) -> function_ref<see below>;
template<auto c, class F, class T>
function_ref(constant_wrapper<c, F>, T&&) -> function_ref<see below>;