C++模板的一些巧妙功能
2024-08-26 22:38:14
判断类中是否有指定名称的函数:
#include<utility>
#define HAS_MEMBER(member)\
template<typename T,typename... Args>\
struct has_member_##member\
{\
private:\
template<typename U> \
static auto Check(int)->decltype(std::declval<U>().member(std::declval<Args>()...), std::true_type()); \
template<typename U>\
static std::false_type Check(...);\
public:\
enum{value=std::is_same<decltype(Check<T>(0)),std::true_type>::value };\
};\
HAS_MEMBER(before)
cout << has_member_before<AA>().value << endl;//是否有无参的before函数
cout << has_member_before<AA,int>().value << endl;//是否有参数是int的before函数
判断类成员函数返回值类型:
假设ContianerT为vector<int>或者const vecotr<int>
decltype(std::declval<ContainerT>().begin()) it_;
最新文章
- 模拟apache commons dbutils 实现自己的BeanListHandler(回调应用)
- HTML特殊转义字符列表
- Javascript学习笔记3 Javascript与BOM简介
- Hadoop学习笔记1-如何简单布署hadoop
- sc delete 服务器名提示“指定的服务已经标记为删除”
- c语言入门教程 / c语言入门经典书籍
- H3C S5500上层接路由,VLAN IP作网站配置实例
- Eclipse快捷键集结
- 敲入url到浏览器后会发生什么
- 【译】在Asp.Net中操作PDF - iTextSharp - 使用字体
- javascript基础(四)语句
- FusionCharts使用问题及解决方法(三)-FusionCharts常见问题大全
- vim 简单笔记
- 【代码总结● Swing中的一些操作与设置】
- SUSE12Sp3-.NET Core 2.2.1 runtime安装
- .Net dependent configuration
- C# 事件的使用方法
- JaveWeb 公司项目(4)----- Easyui的表单验证
- c# devexpress 多个窗口
- shell命令发送网站请求