Get ObserverManager compiling under MSVC
authorChristopher Dykes <cdykes@fb.com>
Sun, 21 Aug 2016 17:02:55 +0000 (10:02 -0700)
committerFacebook Github Bot 0 <facebook-github-bot-0-bot@fb.com>
Sun, 21 Aug 2016 17:08:31 +0000 (10:08 -0700)
Summary: It only needed a minor tweak, but the change still had to be made :(

Reviewed By: andriigrynenko

Differential Revision: D3745021

fbshipit-source-id: 286c6db706c3571842006537c6b17f506609e51d

folly/experimental/observer/detail/ObserverManager.cpp

index 24acabad6ccff29b5a6a617040ffe8c25eb95a92..e29522ab92f679f1c7a9e769e9f6d64b0f5e4bc2 100644 (file)
@@ -161,11 +161,16 @@ void ObserverManager::scheduleNext(Core::Ptr core) {
 
 struct ObserverManager::Singleton {
   static folly::Singleton<ObserverManager> instance;
+  // MSVC 2015 doesn't let us access ObserverManager's constructor if we
+  // try to use a lambda to initialize instance, so we have to create
+  // an actual function instead.
+  static ObserverManager* createManager() {
+    return new ObserverManager();
+  }
 };
 
-folly::Singleton<ObserverManager> ObserverManager::Singleton::instance([] {
-  return new ObserverManager();
-});
+folly::Singleton<ObserverManager> ObserverManager::Singleton::instance(
+    createManager);
 
 std::shared_ptr<ObserverManager> ObserverManager::getInstance() {
   return Singleton::instance.try_get();