我们想说我们要计算某个模板的模板实例的数量。
在C ++ 17中,我认为我可以这样做:
static inline size_t my_template_count = 0;
template <typename T>
struct my_template {
static inline char count_me = []{ my_template_count++; return 0; }();
// mention count_me in all functions.
};
我的问题是:
- 它会起作用吗?
- total_count
上是否存在竞争条件?
(在加载DLL时读取,类似的东西)。
更新:@ n.m。正确指出 - 我必须引用变量。 我的usecase可以在所有构造函数,析构函数,静态方法等中包含(void)count_me。如果没有使用它们,可以忽略实例化。