C++ 左右值参数兼容, 让你的函数变得更为易用

这里可以模拟STL中的实现,自己改良了一下,让其可以返回值。

template<class T, class... Args>
T _func(Args&&... args_) {
	T data(std::forward<Args>(args_)...);
	// 逻辑处理...
	return static_cast<T>(data);
}

test& func(test& data_) {
	return _func<test&>(data_);
}

test func(test&& data_) {
	return _func<test&&>(std::move(data_));
}

这样我们不论传递左值还是右值我们的程序都能正常处理,也可以避免下面的情况

test a;
func(a);
// 可以替换为
test a(func(test()));	// 调用顺序为: 构造 -> 移动构造 -> 析构
如果不需要返回值可以去掉。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值