c++ - 不带参数的可变参数模板的别名

标签 c++ templates alias using variadic

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

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

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

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

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

最佳答案

如果您将 Foo 的模板化定义重命名为其他名称 FooExtended,那么您可以将空模板typedefFoo

//old
class Foo;

//new
template<class... Args>
class FooExtended;

using Foo = FooExtended<>;

关于c++ - 不带参数的可变参数模板的别名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68666013/

相关文章:

c++ - 如何在解码摩尔斯电码时添加空格

c++ - 在模板方法中,有没有办法检查当前类型是 int-variant 还是 float-variant?

angularjs - 如何在 rails slim 模板中添加 Angular 属性指令以输入?

python - __import__ 从哪里获取别名?

c++ - 为什么 g++ 和 MS Visual Studio C++ 执行以下代码的方式不同?

c++ - QTableWidget 中的 SelectedRows 列表

C++ 模板成员函数已定义为相同类型

python - C++ 嵌入 python urllib

c++ - 基于整数范围的模板特化

python - 如何在 Python 中为变量创建别名?