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