不带参数的可变参数模板的别名

冷淡

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

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

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

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

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

梅斯康

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

//old
class Foo;

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

using Foo = FooExtended<>;

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章