几周前,我发布了这个关于奇怪错误消息的问题。罪魁祸首是对 < 标记的错误解析,通过使用“模板”消歧器关键字解决了这个问题。
不过,我们发现了一个意想不到的丑陋惊喜。模板消歧器是c++11,但是我们需要支持VS2008,不支持。所以我们基本上从在 Windows 上编译但不在 linux 上编译的东西变成了在 linux 上编译但不在 Windows 上编译的东西。
你知道如何解决吗?具体来说
- Windows 编译器中是否有一个神奇的选项来启用这个 c++11 构造,或者
- 在旧的 c++ 标准中有另一种方法可以解决这种歧义,它也是交叉编译器,或者
- 如果我们需要使用预处理器,区分两个编译器的预处理器常量(如果有的话)是什么(gcc是另一个)