有没有人知道即使类型匹配,对于每次使用都可以生成唯一的模板实例(我想就是这个词)?
我的想法是使用某种类型的编译时间计数器?喜欢
constexpr int next_count() { // what do I do here? } template struct foo { ... }; template auto make_foo(T val) { return foo(val); }
在此方面的任何帮助将不胜感激。如果没有道理,也可以说。
答案 0 :(得分:0)
您可以将一个额外的模板参数传递给make_foo
函数,并向原始的foo
类(它们将是int
)添加一个附加模板参数,然后选择一个不同的每次调用该函数的值。如果您希望它自动增加,我想到的最好的方法是使用__LINE__
。然后,您可以#define MAKE_FOO(targs, val) make_foo<targs, __LINE__>(val)
。根据需要添加更多targs
。如果您确实希望每个实例都是一个单独的类(如果它将在头文件中),请不要忘记将foo
包装在匿名名称空间中。