Remove no longer needed qualifier check workaround in bind_internal.h
This CL removes a workaround of a qualifier check bug in clang.
The issue was resolved upstream and rolled into the Chromium bundled clang.
Change-Id: I3ffe63a4bce10840838d5f0995b151dad88dc2c8
Reviewed-on: https://chromium-review.googlesource.com/530625
Commit-Queue: Nico Weber <thakis@chromium.org>
Reviewed-by: Nico Weber <thakis@chromium.org>
Cr-Commit-Position: refs/heads/master@{#479435}
CrOS-Libchrome-Original-Commit: 75851f4787a29f2143ca4a8214c6c7398c9852a8
diff --git a/base/bind_internal.h b/base/bind_internal.h
index c8af87d..c27c34f 100644
--- a/base/bind_internal.h
+++ b/base/bind_internal.h
@@ -206,12 +206,7 @@
static R Invoke(R (Receiver::*method)(Args...),
ReceiverPtr&& receiver_ptr,
RunArgs&&... args) {
- // Clang skips CV qualifier check on a method pointer invocation when the
- // receiver is a subclass. Store the receiver into a const reference to
- // T to ensure the CV check works.
- // https://llvm.org/bugs/show_bug.cgi?id=27037
- Receiver& receiver = *receiver_ptr;
- return (receiver.*method)(std::forward<RunArgs>(args)...);
+ return ((*receiver_ptr).*method)(std::forward<RunArgs>(args)...);
}
};
@@ -226,12 +221,7 @@
static R Invoke(R (Receiver::*method)(Args...) const,
ReceiverPtr&& receiver_ptr,
RunArgs&&... args) {
- // Clang skips CV qualifier check on a method pointer invocation when the
- // receiver is a subclass. Store the receiver into a const reference to
- // T to ensure the CV check works.
- // https://llvm.org/bugs/show_bug.cgi?id=27037
- const Receiver& receiver = *receiver_ptr;
- return (receiver.*method)(std::forward<RunArgs>(args)...);
+ return ((*receiver_ptr).*method)(std::forward<RunArgs>(args)...);
}
};