Commit 109334de authored by Andrii Grynenko's avatar Andrii Grynenko Committed by Facebook Github Bot 0

Fix TLObserver copy constructor

Reviewed By: yfeldblum

Differential Revision: D3853494

fbshipit-source-id: 23f5cadcb55a9307fb2a825fe4c53a03c5978d12
parent fd01e2bf
...@@ -58,6 +58,10 @@ TLObserver<T>::TLObserver(Observer<T> observer) ...@@ -58,6 +58,10 @@ TLObserver<T>::TLObserver(Observer<T> observer)
: observer_(observer), : observer_(observer),
snapshot_([&] { return new Snapshot<T>(observer_.getSnapshot()); }) {} snapshot_([&] { return new Snapshot<T>(observer_.getSnapshot()); }) {}
template <typename T>
TLObserver<T>::TLObserver(const TLObserver<T>& other)
: TLObserver(other.observer_) {}
template <typename T> template <typename T>
const Snapshot<T>& TLObserver<T>::getSnapshotRef() const { const Snapshot<T>& TLObserver<T>::getSnapshotRef() const {
auto& snapshot = *snapshot_; auto& snapshot = *snapshot_;
......
...@@ -158,6 +158,7 @@ template <typename T> ...@@ -158,6 +158,7 @@ template <typename T>
class TLObserver { class TLObserver {
public: public:
explicit TLObserver(Observer<T> observer); explicit TLObserver(Observer<T> observer);
TLObserver(const TLObserver<T>& other);
const Snapshot<T>& getSnapshotRef() const; const Snapshot<T>& getSnapshotRef() const;
const Snapshot<T>& operator*() const { const Snapshot<T>& operator*() const {
......
...@@ -248,3 +248,15 @@ TEST(Observer, Stress) { ...@@ -248,3 +248,15 @@ TEST(Observer, Stress) {
} }
}); });
} }
TEST(Observer, TLObserver) {
auto createTLObserver = [](int value) {
return folly::observer::makeTLObserver([=] { return value; });
};
auto k =
std::make_unique<folly::observer::TLObserver<int>>(createTLObserver(42));
EXPECT_EQ(42, ***k);
k = std::make_unique<folly::observer::TLObserver<int>>(createTLObserver(41));
EXPECT_EQ(41, ***k);
}
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment