如果存在的话就调用

一,判断在类中某个函数(也可以是变量或类型)是否存在

template<typename T>

struct xxxx_detector

{

template<typename P,void (P::*)(void)> struct detector{};

template<typename P> static char func(detector<P,&P::init>*);

template<typename P> static long func(...);

static constexpr bool value  = sizeof(func<T>(nullptr)) == sizeof(char);

};

这样的话xxxx_detector<YYY>::value,当类型YYY存在成员函数void YYY::init(void),这个值就是true。

template<bool>

struct either_or

{

template<typename T,typename K,typename ...AK>

auto operator()(T&& t, K&& k, AK&&... ak)

{

return t(ak...);

}

};

template<>

struct either_or<false>

{

template<typename T,typename K,typename ...AK>

auto operator()(T&& t,K&& k,AK&&... ak)

{

return k(ak...);

}

};

这样的话,只要使用

either_or<xxxx_detector<YYY> >(

[](auto&& i)  // 第一个参数

{

i.init();

},

[](auto&& i) //第二个参数

{},

YYY()    // 第三个参数

),

如果存在就调用,不存在就啥都不干。

时间: 2024-10-27 07:51:56

如果存在的话就调用的相关文章

微信浏览器中调用支付宝支付

众所周知,在微信浏览器中是无法唤起支付宝的,会提示请在浏览器中打开,如果非要在微信浏览器中调起支付宝的话,只能是跳出微信浏览器,关于这一点,在支付宝官网给出了一个例子.但是,话说回去,后来我仔细想想,其实真的没有必要非要在微信浏览器中调起支付宝支付(当时真是一根筋啊啊啊...) 支付宝手机网站支付的官方文档: https://doc.open.alipay.com/docs/doc.htm?treeId=203&articleId=105288&docType=1 快速接入: https:

c#解决dll调用的问题

在做一个c#中间程序时,调用第三方的dll安装路径"Program Files" 和"Program Files (x86)"的问题,经过一段时间的研究,找到了下面的解决方案: 思路: 1.配置dll的加载路径 2.监控dll 3.dll加载失败判断操作系统位数(x86.x64) 4.动态加载dll 解决方案: 1.在config中添加dll引用配置: <runtime> <assemblyBinding xmlns="urn:schem

调用已发布的WebService

WebService服务演示 登录http://www.webxml.com.cn 单击手机查询服务 3.         选择要调用的方法 例如: getMobileCodeInfo. 4. 输入要查询的手机号单击”调用” 截图如下, 免费用户 UserID为null a)   可以看到返回如下结果: <?xml version="1.0" encoding="utf-8" ?> <string xmlns="http://WebXml

Spring Cloud ZooKeeper集成Feign的坑2,服务调用了一次后第二次调用就变成了500,错误:Servlet.service() for servlet [dispatcherServlet] in context with path [] threw exception [Request processing failed; nested exception is com.n

错误如下: 2017-09-19 15:05:24.659 INFO 9986 --- [ main] s.c.a.AnnotationConfigApplicationContext : Refreshing org.spring[email protected]56528192: startup date [Tue Sep 19 15:05:24 CST 2017]; root of context hierarchy 2017-09-19 15:05:24.858 INFO 9986 --

Spring EL和资源调用

Spring EL-Spring表达式语言,支持在xml和注解中使用表达式,类似于jsp的EL表达式.我们在开发过程中,经常会涉及到调用各种资源,包含普通文本.网址.配置文件.系统环境变量等,我们可以使用Spring的表达式语言来实现资源的注入. Spring主要在注解@Value的参数中使用表达式: (1)注入普通字符 (2)注入操作系统属性 (3)注入表达式运算结果 (4)注入其他Bean的属性 (5)注入文件内容 (6)注入网址内容 (7)注入属性文件 示例代码如下: 1.准备,增加com

微信公众号调用接口返回码

返回码 说明 -1 系统繁忙,此时请开发者稍候再试 0 请求成功 40001 获取access_token时AppSecret错误,或者access_token无效.请开发者认真比对AppSecret的正确性,或查看是否正在为恰当的公众号调用接口 40002 不合法的凭证类型 40003 不合法的OpenID,请开发者确认OpenID(该用户)是否已关注公众号,或是否是其他公众号的OpenID 40004 不合法的媒体文件类型 40005 不合法的文件类型 40006 不合法的文件大小 4000

MVC下微信企业号网页应用开发调用JSSDK接口不成功问题

在MVC下进行企业微信里的网页应用开发,前台页面中为了调用图像接口,使用了JSSDK.按照官方文档进行了正确配置. 现象:WEB开发工具调试一切正常,但从手机企业微信应用进入页面后接口调用无效(这个页面是从一级页面链接过来的),开了调试模式后,显示config:ok.说明配置无误.经过反复检查,终于发现问题所在. 原因:在一级页面(http://xx.xxx.xxx/main/index)中的链接是使用htmlhelper来写的,即@Html.ActionLink("测试接口",&qu

用gson和httpclient调用微信公众平台API

吐槽:微信api很无语,部分用xml,部分用json. 最近在找如何调用微信公众平台关于json相关的api比较方便,最后发现httpcliect和gson不错.如果你有更好的方式,请告诉我. 以下代码先了解如何使用gson和httpclient,有功夫再整到我的sophia里 import java.io.FileOutputStream; import java.io.IOException; import java.io.InputStreamReader; import java.io.

微信支付开发(APP)的各种坑,.net和iOS的各种陷阱,解决.net调用下单接口提示无权限,解决iOS跳转到微信支付页面中间只有一个确定按钮

直入主题之前,请容我吐槽一下微*的官方东西:ASDFQ%#$%$#$%^[email protected]#$%DSFQ#$%.......:吐槽玩了!大家心照就好. 要完成手机APP跳转到微信的APP进行微信支付,需要进行如下操作: 1.先去微信的开放平台(http://open.weixin.qq.com)进行开发者账号的注册. 2.新建一个APP应用,然后填写必填信息提交审核. 3.进入APP应用,在接口信息中,进行申请“获得微信支付能力”的功能,期间会提交相关的公司营业信息证明等. 通过

微信公众号API测试——接口调用频率限制

接口频率限制[1] 公众号调用接口并不是无限制的.为了防止公众号的程序错误而引发微信服务器负载异常,默认情况下,每个公众号调用接口都不能超过一定限制,当超过一定限制时,调用对应接口会收到如下错误返回码: {"errcode":45009,"errmsg":"api freq out of limit"} 各接口调用频率限制如下: 接口 每日限额 获取access_token 2000 自定义菜单创建 1000 自定义菜单查询 10000 自定义菜