"template"消歧器是 C++11。VS2008编译器有机会吗?

"template" disambiguator is c++11. Any chance for VS2008 compiler?

本文关键字:编译器 机会 VS2008 C++11 template      更新时间:2023-10-16

几个星期前我发布了这个关于一个奇怪的错误消息的问题。罪魁祸首是对<令牌,通过使用"template"消歧关键字解决了这个问题。>

我们发现了一个意想不到的丑陋的惊喜。模板消歧器是c++11,但我们需要支持VS2008,而它不支持它。所以我们基本上从可以在windows上编译而不能在linux上编译的东西,变成了可以在linux上编译而不能在windows上编译的东西。

你知道怎么解决吗?特别是

  • 在windows编译器中是否有一个神奇的选项来启用这个c++11结构,或者
  • 在旧的c++标准中有另一种方法来解决这种模糊性,也就是交叉编译,或者
  • 如果我们需要使用预处理器,预处理器常量是什么(如果有的话)来区分两个编译器(gcc是另一个)

自c++ 98以来,模板禁用器已成为c++的一部分。它是在引入两阶段查找和typename时引入的。