c++元编程tookit类

前言

下面记录几个,在c++元编程中常用的工具类。

Hollow Types

instance_of

代码

c 复制代码
struct instance_of
{
	typedef T type;
	instance_of(int = 0)
	{
	}
};

const instance_of<int> I_INT = instance_of<int>(); // 这种写法有点繁琐
const instance_of<double> I_DOUBLE = 0; // 使用这种写法
// also fine.

作用

快速创建一个global对象,立刻初始化。

empty

代码

c 复制代码
struct empty
{
	empty() {}
};
// const empty EMPTY; 这种写法可能会报 unused的警告
const empty EMPTY = 0;

作用

用该类表示空。

Selector

代码

c 复制代码
template <bool PARAMETER>
struct selector
{
};
typedef selector<true> true_type1;
typedef selector<false> false_type;

作用

可以作为类型参数来做偏特化选择。

Static Value

代码

c 复制代码
template <typename T, T VALUE>
struct static_parameter
{
};
template <typename T, T VALUE>
struct static_value : static_parameter<T, VALUE>
{
	static const T value = VALUE;
	operator T () const
	{
	return VALUE;
	}
	static_value(int = 0)
	{
	}
};

//将static转为非static ,更安全
template <typename T, T VALUE>
inline T static_value_cast(static_value<T, VALUE>) //不需要用到形参,所以可以不用定义形参名
{
return VALUE;
};


int main() {
    auto a  =  static_value_cast(static_value<int, 3>());
    std::cout <<  a << "\n";
}

作用

快速创建一个static对象

相关推荐
橘颂TA2 分钟前
【Linux】System V 通信——共享内存
linux·运维·服务器·c++
梨落秋霜2 分钟前
Python入门篇【输入input】
开发语言·python
wen-pan4 分钟前
Go 语言 GMP 调度模型深度解析
开发语言·go
Buxxxxxx9 分钟前
DAY 34 模块和库的导入
开发语言·python
老前端的功夫11 分钟前
前端水印技术深度解析:从基础实现到防破解方案
开发语言·前端·javascript·前端框架
oioihoii11 分钟前
C++异常安全保证:从理论到实践
开发语言·c++·安全
霍格沃兹测试学院-小舟畅学13 分钟前
性能测试入门:使用 Playwright 测量关键 Web 性能指标
开发语言·前端·php
动感小麦兜23 分钟前
NAS学习
java·开发语言·eureka
小安同学iter39 分钟前
天机学堂day05
java·开发语言·spring boot·分布式·后端·spring cloud·微服务
c骑着乌龟追兔子1 小时前
Day 32 函数专题1:函数定义与参数
开发语言·前端·javascript