没有参数的变量模板的别名



我发现了一些类似的主题,但似乎没有一个能直接回答我的特定问题。

我在一些库中有一个类(我们称之为Foo),我们正在几个模块中使用它。现在我需要将这个类转换为一个可变模板(所以现在我有了:template<class... T> Foo() {}),因为一些新的用途需要完全相同的通用机制,但需要接受内部的额外参数。已经在使用的旧实现不需要这个。

因此,我将其转换为存储在一个*.h文件中的可变模板,但现在,无论我们在哪里已经使用了这个类,我都需要将Foo()的每次出现都更改为Foo<>(),以便现有代码能够正常工作。现在,我不确定是否有一些我甚至不知道的模块会使用这个库,所以我想到了一个灵活的解决方案,比如Foo<gt;,这将不需要在库中发生此更改后更新这些其他模块。

在这个特定的例子中,是否可以使用类似于using Foo = Foo<>的东西,这样代码中已经存在的Foo的所有出现都将自动作为Foo<>处理,而不需要对源代码进行任何更改?

是否可以在与模板定义/声明相同的文件中定义这样的别名,即使它与类本身具有完全相同的名称?

如果将Foo的模板化定义重命名为其他名称FooExtended,则可以将空模板typedef重命名为Foo

//old
class Foo;
//new
template<class... Args>
class FooExtended;
using Foo = FooExtended<>;

相关内容

  • 没有找到相关文章

最新更新