跳转到内容

traits API

文档稀疏
符号
39
已记录
11
修订版本
0.1.0+855c407f828e

28 / 39 个公开 API 符号没有说明。

命名空间

1

结构体

9

traits::StaticOnly

仅允许静态使用,不允许实例化。 一般用于纯工具类或静态配置类,避免外部误建对象。

libs/traits/static_only.hpp:17

函数

19

traits::NoCopy::operator=

                    NoCopy & traits::NoCopy::operator= (const NoCopy &)=delete
                  

上游未提供说明。

libs/traits/no_copy.hpp:18

traits::NoCopyMove::operator=

                    NoCopyMove & traits::NoCopyMove::operator= (const NoCopyMove &)=delete
                  

上游未提供说明。

libs/traits/no_copy_move.hpp:18

traits::NoHeap::operator new

                    static void * traits::NoHeap::operator new (std::size_t)=delete
                  

上游未提供说明。

libs/traits/no_heap.hpp:18

traits::NoHeap::operator new[]

                    static void * traits::NoHeap::operator new[] (std::size_t)=delete
                  

上游未提供说明。

libs/traits/no_heap.hpp:19

traits::NoMove::operator=

                    NoMove & traits::NoMove::operator= (NoMove &&)=delete
                  

上游未提供说明。

libs/traits/no_move.hpp:17

文件

10

libs/traits/interface_only.hpp

仅允许作为接口基类使用,禁止外部直接构造和析构。 这个类型通常用于纯虚接口的基类。构造和析构都被保护起来以后,外部就无法直接实例化它, 只能把它当作父类来继承。

libs/traits/interface_only.hpp

libs/traits/no_copy.hpp

禁止对象拷贝。 适合描述拥有独占资源的对象,比如硬件句柄、锁、缓存区管理器等。 当对象被复制会导致“双重释放”或者状态混乱时,就应该用这种 trait 限制拷贝行为。

libs/traits/no_copy.hpp

libs/traits/no_copy_move.hpp

禁止对象拷贝和移动。 比 NoCopy 更严格:对象既不能复制,也不能转移所有权。 常见于地址稳定性很重要的资源对象,例如被中断回调持有的实例。

libs/traits/no_copy_move.hpp

libs/traits/no_delete.hpp

禁止通过 delete 释放对象。 这个限制通常和受控生命周期一起使用:对象可以创建,但销毁必须由特定接口或者框架接管。

libs/traits/no_delete.hpp

libs/traits/no_derive.hpp

禁止从该类型派生。 适合需要固定对象布局或者不希望外部扩展行为的类型。 直接把类型标记成 final,比靠文档提醒“不要继承”更可靠。

libs/traits/no_derive.hpp

libs/traits/no_heap.hpp

禁止在堆上分配对象。 适合那些必须放在静态存储区、栈上或者外部内存池里的对象。 一旦对象不允许 new / new[],就能强迫调用方显式管理生命周期来源。

libs/traits/no_heap.hpp

libs/traits/no_move.hpp

禁止对象移动。 当对象被外部引用、地址被缓存,或者移动后会破坏系统内某些指针关联时,就应该禁用移动语义。

libs/traits/no_move.hpp

libs/traits/no_stack.hpp

禁止在栈上直接构造对象。 常见于必须通过工厂函数、内存池或者注册表创建的对象。 这样可以强制调用方走统一创建路径,避免局部自动变量生命周期过短。

libs/traits/no_stack.hpp

libs/traits/static_only.hpp

禁止实例化,仅用于静态工具类约束。 这个 trait 用来表达“只允许静态成员函数和静态数据”的意图,避免有人误把工具类当对象来创建。

libs/traits/static_only.hpp

libs/traits/traits.hpp

统一导出对象语义约束 trait。 这个头文件本身不实现复杂逻辑,只负责把一组常见的对象语义限制集中导出。 你可以把它理解成“声明式的约束工具箱”:需要禁止拷贝、禁止堆分配、禁止继承时, 直接包含这个头文件即可。

libs/traits/traits.hpp