@@ -98,49 +98,49 @@ class function_ref<Return(Args...)>
9898 template <class F >
9999 function_ref (F* f) noexcept
100100 requires std::is_function_v<F> and isInvokableWith<F>
101- : mInvoke ([](Storage storage, Args... args) noexcept (isNoexcept) { return invoke (function_ref::get<F>(storage), std::forward<Args>(args)...); })
102- , mStorage (f)
101+ : mInvoke ([](Storage storage, Args... args) noexcept (isNoexcept) { return invoke (function_ref::get<F>(storage), std::forward<Args>(args)...); })
102+ , mStorage (f)
103103 {}
104104
105105 template <auto F>
106106 constexpr function_ref (nontype_t <F>) noexcept
107- : mInvoke([](Storage, Args... args) noexcept (isNoexcept) { return invoke (F, std::forward<Args>(args)...); })
107+ : mInvoke([](Storage, Args... args) noexcept (isNoexcept) { return invoke (F, std::forward<Args>(args)...); })
108108 {}
109109
110110 template <auto F, class T >
111111 constexpr function_ref (nontype_t <F>, T& object) noexcept
112- requires isInvokableWith<decltype(F), T&>
113- : mInvoke(
114- [](Storage storage, Args... args) noexcept (isNoexcept) -> Return
115- {
116- auto & objectStorage = *function_ref::get<constness<T>>(storage);
117- return invoke (F, objectStorage, std::forward<Args>(args)...);
118- })
119- , mStorage (std::addressof(object))
112+ requires isInvokableWith<decltype(F), T&>
113+ : mInvoke(
114+ [](Storage storage, Args... args) noexcept (isNoexcept) -> Return
115+ {
116+ auto & objectStorage = *function_ref::get<constness<T>>(storage);
117+ return invoke (F, objectStorage, std::forward<Args>(args)...);
118+ })
119+ , mStorage (std::addressof(object))
120120 {}
121121
122122 template <auto F, class T >
123123 constexpr function_ref (nontype_t <F>, constness<T> const * object) noexcept
124- requires isInvokableWith<decltype(F), constness<T> const *>
125- : mInvoke(
126- [](Storage storage, Args... args) noexcept (isNoexcept) -> Return
127- {
128- constness<T>& objectStorage = *function_ref::get<T>(storage);
129- return invoke (F, objectStorage, std::forward<Args>(args)...);
130- })
131- , mStorage (std::addressof(object))
124+ requires isInvokableWith<decltype(F), constness<T> const *>
125+ : mInvoke(
126+ [](Storage storage, Args... args) noexcept (isNoexcept) -> Return
127+ {
128+ constness<T>& objectStorage = *function_ref::get<T>(storage);
129+ return invoke (F, objectStorage, std::forward<Args>(args)...);
130+ })
131+ , mStorage (std::addressof(object))
132132 {}
133133
134134 template <class F , class T = std::remove_reference_t <F>>
135135 constexpr function_ref (F&& f) noexcept
136- requires(not std::is_same_v<F, function_ref> and not std::is_member_pointer_v<F> and isInvokableWith<F, constness<T>>)
137- : mInvoke(
138- [](Storage storage, Args... args) noexcept (isNoexcept) -> Return
139- {
140- constness<T>& objectStorage = *function_ref::get<T>(storage);
141- return invoke (objectStorage, std::forward<Args>(args)...);
142- })
143- , mStorage (std::addressof(f))
136+ requires(not std::is_same_v<F, function_ref> and not std::is_member_pointer_v<F> and isInvokableWith<F, constness<T>>)
137+ : mInvoke(
138+ [](Storage storage, Args... args) noexcept (isNoexcept) -> Return
139+ {
140+ constness<T>& objectStorage = *function_ref::get<T>(storage);
141+ return invoke (objectStorage, std::forward<Args>(args)...);
142+ })
143+ , mStorage (std::addressof(f))
144144 {}
145145
146146 template <typename F, class T = std::remove_reference_t <F>>
@@ -167,17 +167,20 @@ class function_ref<Return(Args...)>
167167
168168 template <class T >
169169 requires std::is_object_v<T>
170- constexpr explicit Storage (T* t) noexcept : p (t)
170+ constexpr explicit Storage (T* t) noexcept
171+ : p (t)
171172 {}
172173
173174 template <class T >
174175 requires std::is_object_v<T>
175- constexpr explicit Storage (T const * t) noexcept : cp (t)
176+ constexpr explicit Storage (T const * t) noexcept
177+ : cp (t)
176178 {}
177179
178180 template <class F >
179181 requires std::is_function_v<F>
180- constexpr explicit Storage (F* f) noexcept : fp (f)
182+ constexpr explicit Storage (F* f) noexcept
183+ : fp (f)
181184 {}
182185 };
183186
0 commit comments