Commit 4d0ee00c authored by Yedidya Feldblum's avatar Yedidya Feldblum Committed by Facebook Github Bot

Use static_cast v.s. C cast in folly/Expected.h

Summary:
[Folly] Use `static_cast` v.s. C cast in `folly/Expected.h`.

And don't have empty namespaces - at least have a comment.

Reviewed By: igorsugak

Differential Revision: D9596449

fbshipit-source-id: 6b5b712d7d46eba4a83b7f62c0628a8bcda1f722
parent ba0cf877
...@@ -137,27 +137,29 @@ using IsConvertible = StrictConjunction< ...@@ -137,27 +137,29 @@ using IsConvertible = StrictConjunction<
std::is_assignable<To&, From>>; std::is_assignable<To&, From>>;
template <class T, class U> template <class T, class U>
auto doEmplaceAssign(int, T& t, U&& u) -> decltype(void(t = (U &&)u)) { auto doEmplaceAssign(int, T& t, U&& u)
t = (U &&)u; -> decltype(void(t = static_cast<U&&>(u))) {
t = static_cast<U&&>(u);
} }
template <class T, class U> template <class T, class U>
auto doEmplaceAssign(long, T& t, U&& u) -> decltype(void(T((U &&)u))) { auto doEmplaceAssign(long, T& t, U&& u)
-> decltype(void(T(static_cast<U&&>(u)))) {
t.~T(); t.~T();
::new ((void*)std::addressof(t)) T((U &&)u); ::new ((void*)std::addressof(t)) T(static_cast<U&&>(u));
} }
template <class T, class... Us> template <class T, class... Us>
auto doEmplaceAssign(int, T& t, Us&&... us) auto doEmplaceAssign(int, T& t, Us&&... us)
-> decltype(void(t = T((Us &&)us...))) { -> decltype(void(t = T(static_cast<Us&&>(us)...))) {
t = T((Us &&)us...); t = T(static_cast<Us&&>(us)...);
} }
template <class T, class... Us> template <class T, class... Us>
auto doEmplaceAssign(long, T& t, Us&&... us) auto doEmplaceAssign(long, T& t, Us&&... us)
-> decltype(void(T((Us &&)us...))) { -> decltype(void(T(static_cast<Us&&>(us)...))) {
t.~T(); t.~T();
::new ((void*)std::addressof(t)) T((Us &&)us...); ::new ((void*)std::addressof(t)) T(static_cast<Us&&>(us)...);
} }
struct EmptyTag {}; struct EmptyTag {};
...@@ -665,7 +667,7 @@ class FOLLY_EXPORT BadExpectedAccess : public std::logic_error { ...@@ -665,7 +667,7 @@ class FOLLY_EXPORT BadExpectedAccess : public std::logic_error {
}; };
namespace expected_detail { namespace expected_detail {
// empty
} // namespace expected_detail } // namespace expected_detail
/** /**
......
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