封装简单算术类型的c++
c++ wrapping simple arithmetic types
我想用默认构造函数扩展int32_t和int64_t。我想我必须使用来自boost operators .hpp的operator<>和operator2<>来定义新的类型。
- 这就够了吗,有例子吗?
- 这种方法对c++11/14有影响吗?我没有看到在operators.hpp中使用通用引用。简单地输入这些类来利用c++11/14的特性有意义吗?虽然冗长但相对简单。
我理解这样做的动机,但是不让整型未初始化的做法最终可能会减少心痛。
然而,这可能是一个很好的起点。您会注意到,普通算术运算不需要操作符。
#include <iostream>
template<class Type, Type original_value>
struct safe_integral
{
safe_integral()
: _v(original_value)
{}
safe_integral(Type t)
: _v(t)
{}
operator const Type&() const { return _v; }
operator Type&() { return _v; }
private:
Type _v;
};
using namespace std;
auto main() -> int
{
using safe_int = safe_integral<int, 0>;
safe_int x;
cout << "original value: " << x << endl;
x += 6;
cout << "adding 6: " << x << endl;
safe_int y = x;
safe_int z = x + 6;
safe_int w = x + z;
cout << "w is : " << w << endl;
return 0;
}
预期输出:original value: 0
adding 6: 6
w is : 18
相关文章:
- ArduinoJson 6.15.2:JsonObject没有命名类型
- 防止主数据类型C++的隐式转换
- 大量序列中核苷酸类型的快速计数
- 如何从C++中的依赖类型中获得它所依赖的类型
- 有关插入适配器的错误。[错误]请求从 'back_insert_iterator<vector<>>' 类型转换为非标量类型
- 是否可以初始化不可复制类型的成员变量(或基类)
- 如何获取std::result_of函数的返回类型
- 从父命名空间重载类型
- 如果C++类在类方法中具有动态分配,但没有构造函数/析构函数或任何非静态成员,那么它仍然是POD类型吗
- 我想将一个对T类型的非常量左值引用绑定到一个T类型的临时值
- Openssl 1.1.1d无效使用不完整的类型"struct dsa_st"
- 访问者访问变体并返回不同类型时出错
- 在VS2010-VS2015下编译时,如何使用decltype作为较大类型表达式的LHS
- 处理小于cpu数据总线的数据类型.(c++转换为机器代码)
- C++ 雷神库 - 使用资源加载器类时出现问题(不命名类型)
- 模板元程序查找相似的连续类型名称
- 是否可以从int转换为enum类类型
- 构造函数正在调用一个使用当前类类型的函数
- 我应该使用什么来代替void作为变体中的替代类型之一
- 类中的字符串不命名类型