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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了生成用于使用模板的唯一模板实例相关的知识,希望对你有一定的参考价值。

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

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


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


    template 
    struct foo
    {
        ...
    };

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

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

答案

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

以上是关于生成用于使用模板的唯一模板实例的主要内容,如果未能解决你的问题,请参考以下文章

Eclipse 中的通用代码片段或模板

使用vscode,新建.vue文件,tab自动生成vue代码模板

使用vscode,新建.vue文件,tab(enter)自动生成vue代码模板

VS Code配置snippets代码片段快速生成html模板,提高前端编写效率

vscode 用户代码片段 vue初始化模板 Snippet #新加入开头注释 自动生成文件名 开发日期时间等内容

动软代码生成器 可用于生成Entity层,可更改模板 /codesmith 也可以