Skip to content

Commit

Permalink
Forward lvalue and rvalue refs as far as possible
Browse files Browse the repository at this point in the history
  • Loading branch information
lballabio committed May 30, 2024
1 parent fe55b28 commit a19e2ec
Showing 1 changed file with 20 additions and 5 deletions.
25 changes: 20 additions & 5 deletions ql/handle.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -42,8 +42,10 @@ namespace QuantLib {
protected:
class Link : public Observable, public Observer {
public:
explicit Link(ext::shared_ptr<T> h,
bool registerAsObserver);
Link(const ext::shared_ptr<T>& h,
bool registerAsObserver);
Link(ext::shared_ptr<T>&& h,
bool registerAsObserver);
void linkTo(ext::shared_ptr<T>,
bool registerAsObserver);
bool empty() const { return !h_; }
Expand Down Expand Up @@ -133,15 +135,22 @@ namespace QuantLib {
explicit RelinkableHandle(
T* p,
bool registerAsObserver = true);
void linkTo(ext::shared_ptr<T> h,
void linkTo(const ext::shared_ptr<T>& h,
bool registerAsObserver = true);
void linkTo(ext::shared_ptr<T>&& h,
bool registerAsObserver = true);
};


// inline definitions

template <class T>
inline Handle<T>::Link::Link(ext::shared_ptr<T> h, bool registerAsObserver) {
inline Handle<T>::Link::Link(const ext::shared_ptr<T>& h, bool registerAsObserver) {
linkTo(h, registerAsObserver);
}

template <class T>
inline Handle<T>::Link::Link(ext::shared_ptr<T>&& h, bool registerAsObserver) {
linkTo(std::move(h), registerAsObserver);
}

Expand Down Expand Up @@ -205,7 +214,13 @@ namespace QuantLib {
: Handle<T>(p,registerAsObserver) {}

template <class T>
inline void RelinkableHandle<T>::linkTo(ext::shared_ptr<T> h,
inline void RelinkableHandle<T>::linkTo(const ext::shared_ptr<T>& h,
bool registerAsObserver) {
this->link_->linkTo(h, registerAsObserver);
}

template <class T>
inline void RelinkableHandle<T>::linkTo(ext::shared_ptr<T>&& h,
bool registerAsObserver) {
this->link_->linkTo(std::move(h), registerAsObserver);
}
Expand Down

0 comments on commit a19e2ec

Please sign in to comment.