Boost.Local_Function模块实现不可复制的本地函数测试

109 篇文章 ¥59.90 ¥99.00
本文介绍如何利用Boost.Local_Function在C++中定义不可复制的本地函数,并提供了一个测试程序示例,展示当尝试复制此类函数时会抛出异常。

Boost.Local_Function模块实现不可复制的本地函数测试

在C++中,本地函数是指定义在其他函数内部的函数。Boost.Local_Function提供了一种方便的方法来定义本地函数并扩展其作用域。本文将演示如何使用Boost.Local_Function模块实现不可复制的本地函数,并提供相应的测试程序。

首先,在编写测试程序之前,需要安装Boost库。可以通过在终端输入以下命令来安装Boost:

sudo apt-get install libboost-all-dev

接下来,我们编写一个测试程序,该程序定义了一个不可复制的本地函数,并尝试复制该函数。如果尝试复制函数,则会抛出异常。以下是完整的测试程序:

#include <iostream>
#include <boost/local_function.hpp></
-- old fap or hap, send the message to new fap local wait_time = 2 if new_master_id ~= self_id then if need_to_reset_channel(new_master_id) then local app_wifi = require("luci.model.app_wifi").Wifi() app_wifi:reset_channel() if not sync_update(new_master_id) then return false, "sync wifi default profile failed, please try again" end end dbg.print("Send to new master") local _ubus = ubus.connect() -- ubus call sync send/request '{"opcode":XXX, "target_id":"devid","data":YYY}' local args = {} args.opcode = tonumber(0x420F) args.target_id = new_master_id -- for test --args.include_myself = true local data = {} data.params = {} data.params.from = self_id data.params.device_id = new_master_id data.params.cloud_account = cloud_account data.params.config_ver = sync.get_config_version() if old_role == "AP" then data.params.need_notify = true end args.data = data --dbg.print("args: " .. json.encode(args)) local result = _ubus:call("sync", "request", args) -- {"data":{"error_code":1,"msg":"request from myself"},"total":1,"success":1} dbg.print("result: " .. json.encode(result)) if not result or not result.success then dbg.print("sync request error") _ubus:close() return false, "sync request error" elseif result.success < 0 then dbg.print("sync request error.") _ubus:close() return false, result.errmsg elseif result.success > 0 then local res = result.data if not res then _ubus:close() sync.sync_boost() return false, result.errmsg elseif not res.error_code or res.error_code ~= 0 then _ubus:close() sync.sync_boost() return false, res.msg else wait_time = res.result.wait_time end else -- success == 0 _ubus:close() return false, "no legal request" end end 这段代码分析一下,每一行都分析解释
06-21
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值