我想做一个单例类,调用它global_references
包含一堆缓存的全局值。单例类代码将从一组表中自动生成。一般方案是这样的:
global_references.h
struct global_references
{
some_type value1;
some_type value2;
some_type value3;
...
static const global_references& instance();
};
假设global_references::instance()
初始化各种 valueN 变量并返回单例实例。然后各种客户端将在自己的代码中使用缓存的值:
some_translation_unit.cpp
...
x = global_references::instance().value1;
我担心的是我会将项目添加到用于生成自动生成的global_references
类的表中,但随着时间的推移,它们生成的一些符号将变得过时并停止在程序中使用。我想知道什么时候发生这种情况,最好是让编译器或链接器抱怨一个未使用的符号,或者一个分配但从未使用过的值。这将提醒我从表中删除相应的项目。我也愿意接受任何其他相当简单的解决方案。
我在 Windows 上使用 MinGW [g++ 4.6.2]。
已经考虑的选项
我考虑过让成员函数返回值,但-Wunused-function
编译器选项仅适用于静态函数,而我需要global_references
成为可以包含在任何翻译单元中的模块化组件。