@@ -160,39 +160,47 @@ class observer_ptr {
160160
161161// Free function for dynamic casting observer_ptr<B> to observer_ptr<A>
162162template <class T , class U >
163- observer_ptr<T> dynamic_observer_cast (const observer_ptr<U>& r) noexcept
163+ inline observer_ptr<T>
164+ dynamic_observer_cast (const observer_ptr<U>& r) noexcept
164165{
165- if (auto p = dynamic_cast <typename observer_ptr<T>::element_type*>(r.get ()))
166- return observer_ptr<T>(r);
167- else
168- return observer_ptr<T>{nullptr };
166+ auto * p = dynamic_cast <typename observer_ptr<T>::element_type*>(r.get ());
167+
168+ if (p) return observer_ptr<T>(p);
169+
170+ return observer_ptr<T>{nullptr };
169171}
170172
171173template <class T , class U >
172- observer_ptr<const T> dynamic_observer_cast (const observer_ptr<const U>& r) noexcept
174+ inline observer_ptr<const T>
175+ dynamic_observer_cast (const observer_ptr<const U>& r) noexcept
173176{
174- if (auto p = dynamic_cast <const typename observer_ptr<const T>::element_type*>(r.get ()))
175- return observer_ptr<const T>(p);
176- else
177- return observer_ptr<const T>{nullptr };
178- }
177+ const auto * p = dynamic_cast <const typename observer_ptr<const T>::element_type*>(r.get ());
178+
179+ if (p) return observer_ptr<const T>(p);
180+
181+ return observer_ptr<const T>{nullptr };
182+ }
179183
180184template <class T , class U >
181- observer_ptr<T> static_observer_cast (const observer_ptr<U>& r) noexcept
185+ inline observer_ptr<T>
186+ static_observer_cast (const observer_ptr<U>& r) noexcept
182187{
183- if (auto p = static_cast <typename observer_ptr<T>::element_type*>(r.get ()))
184- return observer_ptr<T>(r);
185- else
186- return observer_ptr<T>{nullptr };
188+ auto * p = static_cast <typename observer_ptr<T>::element_type*>(r.get ());
189+
190+ if (p) return observer_ptr<T>(p);
191+
192+ return observer_ptr<T>{nullptr };
187193}
188194
189195template <class T , class U >
190- observer_ptr<const T> static_observer_cast (const observer_ptr<const U>& r) noexcept
196+ inline observer_ptr<const T>
197+ static_observer_cast (const observer_ptr<const U>& r) noexcept
191198{
192- if (auto p = static_cast <const typename observer_ptr<const T>::element_type*>(r.get ()))
193- return observer_ptr<const T>(p);
194- else
195- return observer_ptr<const T>{nullptr };
199+ const auto * p = static_cast <const typename observer_ptr<const T>::element_type*>(r.get ());
200+
201+ if (p) return observer_ptr<const T>(p);
202+
203+ return observer_ptr<const T>{nullptr };
196204}
197205
198206// Non-member swap
0 commit comments