This is an automated email from the ASF dual-hosted git repository.

guangmingchen pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/brpc.git


The following commit(s) were added to refs/heads/master by this push:
     new d688e755 Fix compile issue when the linking project is using C++23 
(#3180)
d688e755 is described below

commit d688e7550be4b4c41b9a4dc55add2a2c75be1296
Author: Li Yin <[email protected]>
AuthorDate: Wed Dec 31 10:48:43 2025 +0800

    Fix compile issue when the linking project is using C++23 (#3180)
    
    The root cause is unique_ptr has constexpr destructor since C++23
    
    libcxx/include/__memory/unique_ptr.h:75:19: error: invalid application of 
'sizeof' to an incomplete type 'brpc::RedisCommandHandler'
       75 |     static_assert(sizeof(_Tp) >= 0, "cannot delete an incomplete 
type");
          |                   ^~~~~~~~~~~
    libcxx/include/__memory/unique_ptr.h:290:7: note: in instantiation of 
member function 'std::default_delete<brpc::RedisCommandHandler>::operator()' 
requested here
      290 |       __deleter_(__tmp);
          |       ^
    libcxx/include/__memory/unique_ptr.h:259:71: note: in instantiation of 
member function 'std::unique_ptr<brpc::RedisCommandHandler>::reset' requested 
here
      259 |   _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX23 ~unique_ptr() 
{ reset(); }
          |                                                                     
  ^
    src/brpc/redis.h:220:14: note: in instantiation of member function 
'std::unique_ptr<brpc::RedisCommandHandler>::~unique_ptr' requested here
      220 |     explicit RedisConnContext(const RedisService* rs)
          |              ^
    src/brpc/redis.h:190:7: note: forward declaration of 
'brpc::RedisCommandHandler'
      190 | class RedisCommandHandler;
    
    Co-authored-by: yin.li <[email protected]>
---
 src/brpc/redis.cpp | 13 +++++++++----
 src/brpc/redis.h   |  5 +----
 2 files changed, 10 insertions(+), 8 deletions(-)

diff --git a/src/brpc/redis.cpp b/src/brpc/redis.cpp
index 9af036f8..b9c5363f 100644
--- a/src/brpc/redis.cpp
+++ b/src/brpc/redis.cpp
@@ -101,10 +101,10 @@ bool RedisRequest::AddCommand(const butil::StringPiece& 
command) {
         CHECK(st.ok()) << st;
         _has_error = true;
         return false;
-    }    
+    }
 }
 
-bool RedisRequest::AddCommandByComponents(const butil::StringPiece* 
components, 
+bool RedisRequest::AddCommandByComponents(const butil::StringPiece* components,
                                          size_t n) {
     if (_has_error) {
         return false;
@@ -117,7 +117,7 @@ bool RedisRequest::AddCommandByComponents(const 
butil::StringPiece* components,
         CHECK(st.ok()) << st;
         _has_error = true;
         return false;
-    }        
+    }
 }
 
 bool RedisRequest::AddCommandWithArgs(const char* fmt, ...) {
@@ -356,7 +356,7 @@ bool RedisService::AddCommandHandler(const std::string& 
name, RedisCommandHandle
     _command_map[lcname] = handler;
     return true;
 }
- 
+
 RedisCommandHandler* RedisService::FindCommandHandler(const 
butil::StringPiece& name) const {
     auto it = _command_map.find(name.as_string());
     if (it != _command_map.end()) {
@@ -371,6 +371,11 @@ RedisCommandHandler* 
RedisCommandHandler::NewTransactionHandler() {
 }
 
 // ========== impl of RedisConnContext ==========
+RedisConnContext::RedisConnContext(const RedisService* rs)
+        : redis_service(rs)
+        , batched_size(0)
+        , session(nullptr) {}
+
 RedisConnContext::~RedisConnContext() { }
 
 void RedisConnContext::Destroy() {
diff --git a/src/brpc/redis.h b/src/brpc/redis.h
index 50064519..c140baf3 100644
--- a/src/brpc/redis.h
+++ b/src/brpc/redis.h
@@ -217,10 +217,7 @@ class RedisCommandParser;
 // This class is as parsing_context in socket.
 class RedisConnContext : public Destroyable  {
 public:
-    explicit RedisConnContext(const RedisService* rs)
-        : redis_service(rs)
-        , batched_size(0)
-        , session(nullptr) {}
+    explicit RedisConnContext(const RedisService* rs);
 
     ~RedisConnContext();
     // @Destroyable


---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to