TarsCloud / TarsCpp

C++ language framework rpc source code implementation
BSD 3-Clause "New" or "Revised" License
520 stars 254 forks source link

ServantHandle&async_callback支持右值引用参数 #255

Closed BeyondWUXF closed 2 years ago

BeyondWUXF commented 2 years ago

struct、vetcor、map等支持右值引用参数,减少不必要的拷贝

ruanshudong commented 2 years ago

这种不要用参数来区分, 直接多生成一个函数会不会更简单?

BeyondWUXF commented 2 years ago

你是指生两个函数,一个是const引用的参数,另一个是右值引用的参数?

ruanshudong commented 2 years ago

对, 不行么?

BeyondWUXF commented 2 years ago

生成两个的话调用函数里就不好判断需要调用const&的函数还是&&的函数,所以我的想法是在生成文件的时候就直接明确我想要const&还是&&

ruanshudong commented 2 years ago

用参数指定这种做法其实很难推广, 你有生成的具体例子没有 , 写代码验证一下编译啥情况?

BeyondWUXF commented 2 years ago

我用自己的项目试了下编译是正常的,不过我只在centOs下编译。

BeyondWUXF commented 2 years ago

image 按你说的如果是两个函数,像这个地方怎么判断处理

ruanshudong commented 2 years ago

可以考虑调用&&的方法, &&这个函数里面, 转一下调用const &的, 如果继承了&&, 就直接处理了, 继承了const &也没错? 这样也能兼容老版本?

BeyondWUXF commented 2 years ago

这个可以,我有空再改改

BeyondWUXF commented 2 years ago

参数有非基础类型的时候生成重载一个右值引用的函数