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

问题描述 投票:-3回答:1

有没有人知道是否可以为每次使用生成一个独特的模板实例(我认为这个词),即使这些类型是匹配的?

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


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


    template 
    struct foo
    {
        ...
    };

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

任何有关这方面的帮助将不胜感激。如果它没有意义,那也可以这么说。

c++
1个回答
0
投票

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

© www.soinside.com 2019 - 2024. All rights reserved.