首页 > 编程语言 >Telegram 源码解读点滴记录

Telegram 源码解读点滴记录

时间:2023-04-26 09:14:05浏览次数:44  
标签:false auto Telegram callable 源码 plain test true 点滴

1.test_callable_plain,作用:判断参数是否与函数声明一致

using false_t = char;
struct true_t {
	false_t data[2];
};
static_assert(sizeof(false_t) != sizeof(true_t), "I can't work :(");

template <
	typename Method,
	typename ...Args,
	typename = decltype(std::declval<Method>()(
		std::declval<Args>()...))>
true_t test_callable_plain(Method &&, Args &&...) noexcept;
false_t test_callable_plain(...) noexcept;

template <typename Method, typename ...Args>
struct is_callable_plain
	: std::bool_constant<(
		sizeof(test_callable_plain(
			std::declval<Method>(),
			std::declval<Args>()...
		)) == sizeof(true_t))> {
};

template <typename Method, typename ...Args>
constexpr bool is_callable_plain_v = is_callable_plain<Method, Args...>::value;



//使用示例代码
void FnC(int age, string name) {
    
}

int main()
{
    auto c1 = test_callable_plain(FnC, 1);        //c1值为false_t
    auto c2 = test_callable_plain(FnC, 1,"FFF");    //c2值为true_t
    constexpr auto c3 = is_callable_plain_v<decltype(FnC), int>; //false
    constexpr auto c4 = is_callable_plain_v<decltype(FnC), int,string>;//true
}

 

标签:false,auto,Telegram,callable,源码,plain,test,true,点滴
From: https://www.cnblogs.com/qing123/p/17354596.html

相关文章

  • Django之视图函数层 (必会三板斧 JsonResponse对象 request对象获取文件 FBV与CBV
    目录视图层之必会三板斧用来处理请求的视图函数都必须返回HttpResponse对象情况一:啥也不返回这里会报一个没有返回HttpResponse对象的错误,由此可见必须要返回一个HttpResponse对象情况二:返回HttpResponse对象点击Ctrl键查看源码可见是HttpResponse类,所以会返回一个值情......
  • jdk并发包 CopyOnWriteArrayList源码分析
    CopyOnWriteArrayList是jdk1.5并法包里面用于处理高并发下,读多写少的情况下,降低锁等待的集合类。下面对该类实现做一个简要的分析1,首先CopyOnWriteArrayList是实现了List接口,对=List接口的相关方法进行了实现。2,下面的它的add方法,会首先加锁,然后copy原List内部的数组,然后对新数组长......
  • Django框架——路由分发、名称空间、虚拟环境、视图层三板斧、JsonResponse对象、requ
    路由分发#Django支持每个应用都可以有自己独立的路由层、静态文件、模版层。基于该特性多人开发项目就可以完全解耦合,之后利用路由分发还可以整合到一起多个应用都有很多路由与视图函数的对应关系这个时候可以拆分到各自的路由层中使用路由分发之前总路由直接是路由与视图......
  • Turndown 源码解析:二、规则
    规则集包含一系列规则,决定各种标签如何反编译。单个规则的格式是:{ filter:String|String[]|function(node), replacement:function(node,content,options),}filter字段用于判断节点是否适用单条规则。如果它是字符串,则判断node.nodeName===filter;如果它是字符串数......
  • 在线分销商城APP资源项目对接自助下单赚钱项目源码定制开发
    分销设置:多级分销可自定义百分比,更多分销机制讲解资源。数据管理:更简单明了管理订单售后,查询余额提现更方便。商品管理:可加虚拟商品可加价,可去重多余商品数据,一键替换,更方便管理后台商品。资源项目对接:可自己去对接更多资源的渠道,低成本高收益,管理方便,加密设置。其他更能:信息配置,分......
  • CBV源码剖析和模板层
    getattr()函数用来返回函数的一个对象属性值语法:getattr(object,name,default)object--对象。name--字符串,对象属性。default--默认返回值,如果不提供该参数,在没有对应属性时,将触发AttributeError。>>>classA(object):...bar=1...>>>a=A()>>>getatt......
  • Turndown 源码解析:一、辅助函数
    extend()Object.assign的补丁。functionextend(destination){for(vari=1;i<arguments.length;i++){varsource=arguments[i];for(varkeyinsource){if(source.hasOwnProperty(key))destination[key]=source[key];}}ret......
  • 环保家具网站源码产品展示招商加盟二开模板定制开发
    包含了网站首页;关于我们; 新闻动态;产品中心;案例展示;荣誉资质;招商加盟;联系我们;等多个版块,可以快速搭建家装设计品牌招商官网1.品牌展示:网站可以展示各种家具品牌的产品和服务,包括品牌介绍、产品展示、服务范围等,便于用户了解品牌的相关信息,帮助其选择适合自己的品......
  • 直播商城源码,PopupWindow菜单在ListView中显示
    直播商城源码,PopupWindow菜单在ListView中显示  privatePopupWindowmOperaPopup;  privatevoidshowMenuPopup(Viewanchor)  {    if(mOperaPopup==null)    {      ViewpopupView=View.inflate(mContext,R.layout.popup_opera_sub......
  • Android源码在线查看网站
    一、aospxrefhttp://aospxref.com/优点:更新速度快缺点:历史版本较少二、androidxrefhttp://androidxref.com/优点:历史版本较多缺点:更新速度慢两者可搭配使用。非常便利三、Google在线源码上面两个的平台存在如下几点问题:搜索关键字困难且不精确,特别是对有括号和“_”的......