“template”disambiguator是c ++ 11。有没有VS2008编译器的机会?

时间:2013-04-10 08:05:02

标签: c++ templates visual-studio-2008 g++

几个星期前I posted this question关于一个奇怪的错误消息。罪魁祸首是解析<令牌,通过使用“template”disambiguator关键字解决了一个问题。

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

你知道怎么解决吗?具体地

  • 在Windows编译器中有一个魔术选项来启用此c ++ 11结构,或
  • 在旧的c ++标准中有一种替代方法可以解决这种歧义,也就是交叉编译器,或者
  • 如果我们需要使用预处理器,那么区分两个编译器的前处理器常量(如果有的话)是什么(gcc是另一个)

1 个答案:

答案 0 :(得分:8)

自C ++ 98以来,模板disabiguator已成为C ++的一部分。它是在引入两个阶段查找时引入的,以及typename