masaori335 commented on a change in pull request #6996:
URL: https://github.com/apache/trafficserver/pull/6996#discussion_r454686210
##########
File path: iocore/eventsystem/I_Continuation.h
##########
@@ -63,6 +63,35 @@ extern EThread *this_event_thread();
typedef int (Continuation::*ContinuationHandler)(int event, void *data);
+// Convert event handler pointer fp to type ContinuationHandler, but with a
compiler error if class C is not
+// derived from the class Continuation.
+//
+template <class C, typename T>
+constexpr ContinuationHandler
+continuation_handler_void_ptr(int (C::*fp)(int, T *))
+{
+ auto fp2 = reinterpret_cast<int (C::*)(int, void *)>(fp);
+ return static_cast<ContinuationHandler>(fp2);
+}
+
+// Overload for nullptr.
+//
+constexpr ContinuationHandler continuation_handler_void_ptr(std::nullptr_t)
+{
+#undef X
+#if !defined(__GNUC__)
+#define X 1
+#else
+#define X (__GNUC__ > 7)
Review comment:
Talked on slack, this is a workaround fix to avoid a bug of gcc-7 with
static_assert. Let's remove when we drop the gcc-7 support.
----------------------------------------------------------------
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
For queries about this service, please contact Infrastructure at:
[email protected]