生成唯一的模板实例以使用模板

时间:2019-04-24 17:19:12

标签: c++

有没有人知道即使类型匹配,对于每次使用都可以生成唯一的模板实例(我想就是这个词)?

我的想法是使用某种类型的编译时间计数器?喜欢


    constexpr int next_count() 
    {
        // what do I do here?
    }


    template 
    struct foo
    {
        ...
    };

    template 
    auto make_foo(T val)
    {
        return foo(val);
    }

在此方面的任何帮助将不胜感激。如果没有道理,也可以说。

1 个答案:

答案 0 :(得分:0)

您可以将一个额外的模板参数传递给make_foo函数,并向原始的foo类(它们将是int)添加一个附加模板参数,然后选择一个不同的每次调用该函数的值。如果您希望它自动增加,我想到的最好的方法是使用__LINE__。然后,您可以#define MAKE_FOO(targs, val) make_foo<targs, __LINE__>(val)。根据需要添加更多targs。如果您确实希望每个实例都是一个单独的类(如果它将在头文件中),请不要忘记将foo包装在匿名名称空间中。