Switch future's Core<T> to std::is_nothrow_constructible
authorChristopher Dykes <cdykes@fb.com>
Fri, 14 Jul 2017 22:17:31 +0000 (15:17 -0700)
committerFacebook Github Bot <facebook-github-bot@users.noreply.github.com>
Fri, 14 Jul 2017 22:27:22 +0000 (15:27 -0700)
Summary:
MSVC has issues with the way it was written, so just use the standard version instead.

Upstream bug report: https://developercommunity.visualstudio.com/content/problem/80433/incorrect-error-c2462-cannot-define-a-type-in-a-ne.html

Reviewed By: yfeldblum

Differential Revision: D5427029

fbshipit-source-id: ae3737175d5b8e9738ed6b9573412d1d566b0e1c

folly/futures/detail/Core.h

index dc91729fad4b014dc7ab096d3cdea1dc17e887bc..6cbdebba25841a9677c824f54e38e0d2bb3ad037 100644 (file)
@@ -91,7 +91,7 @@ class Core final {
 
   template <typename... Args>
   explicit Core(in_place_t, Args&&... args) noexcept(
-      noexcept(::new (nullptr) T(std::declval<Args&&>()...)))
+      std::is_nothrow_constructible<T, Args&&...>::value)
       : result_(in_place, in_place, std::forward<Args>(args)...),
         fsm_(State::OnlyResult),
         attached_(1) {}