有没有人知道是否可以为每次使用生成一个独特的模板实例(我认为这个词),即使这些类型是匹配的?
我的想法是使用某种类型的编译时间计数器?喜欢
constexpr int next_count() { // what do I do here? } template struct foo { ... }; template auto make_foo(T val) { return foo(val); }
任何有关这方面的帮助将不胜感激。如果它没有意义,那也可以这么说。
您可以将额外的模板参数传递给make_foo
函数,并将额外的模板参数添加到原始foo
类(它们将是int
s),并在每次调用函数时选择不同的值。如果你想让它自动增加,我能想到的最好的事情是使用__LINE__
。然后你可以#define MAKE_FOO(targs, val) make_foo<targs, __LINE__>(val)
。必要时添加更多targs
。如果您真的希望每个实例都是一个单独的类(如果它将在头文件中),请不要忘记将foo
包装在匿名命名空间中。