g++ 中模板代码的向后兼容性

问题描述 投票:0回答:0

g++ 11.3.0 无法编译代码

template <typename T> class Foo { public: Foo<T>() {} };

错误是“')' 标记前的预期不合格 ID”

修复它的一种方法是将

Foo<T>
更正为
Foo
因为现代版本的 g++ 可以理解类中没有模板参数的模板类方法。

但是像这样的代码可以在早期版本的 g++ 中编译。

手动代码修复是一种不方便的方式,因为一些开源依赖项如 websocketcpp 包含大量这样的代码,创建自己的 fork 并修复所有代码非常不方便。

所以,我建议在 g++ 中有一个标志或一些 pragma,这可能有助于解决这个问题。这里有没有代码修复的解决方法吗?

c++ g++ backwards-compatibility
© www.soinside.com 2019 - 2024. All rights reserved.