template<class... T>
static constexpr bool is-invocable-using = see below;
template<class F> function_ref(F* f) noexcept;
template<class F> constexpr function_ref(F&& f) noexcept;
template<auto f> constexpr function_ref(nontype_t<f>) noexcept;
template<auto f, class U>
constexpr function_ref(nontype_t<f>, U&& obj) noexcept;
template<auto f, class T>
constexpr function_ref(nontype_t<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 f>
function_ref(nontype_t<f>) -> function_ref<see below>;
template<auto f, class T>
function_ref(nontype_t<f>, T&&) -> function_ref<see below>;