【问题标题】:Solaris C++ stream input >> operator and templates of templatesSolaris C++ 流输入 >> 模板的运算符和模板
【发布时间】:2010-12-27 22:11:35
【问题描述】:

我有一个编译器选项可以在 CC 编译器中使用来获取以下代码 (在 Visual C++ 中编译良好)

std::vector<std::vector<double>> v2;

没有以下错误

错误:应为“,”而不是“>>”

【问题讨论】:

    标签: c++ templates compiler-errors


    【解决方案1】:

    试试这个:

    std::vector&lt;std::vector&lt;double&gt; &gt; v2; //give a space between two '&gt;'

    "&gt;&gt;" 被解释为右移运算符,因此会出现编译时错误。

    这个问题将在 C++0x 中修复。看看here

    【讨论】:

    • 还有一个我等不及 C++0x 完成的原因 :)
    • 我知道为什么会这样。问题是为什么它在 VC++ 中可以顺利编译。无论如何 - 我正在寻求一个编译器选项解决方案,以使 CC 更兼容 VC++ - 因为我无法更改原始源代码。
    • 我认为它是一个 MSVC++ 扩展。
    • @Steve:如果您无法更改原始来源,并且原始来源是非标准的(就像这样),那么您就有麻烦了。编译器通常具有启用非标准扩展的选项,但您不能依赖它来支持任何给定的扩展。
    • MSVC++ 支持许多非标准扩展(例如:将临时对象绑定到非常量引用)
    【解决方案2】:

    两个大于号之间需要一个空格:

    std::vector<std::vector<double> > v2;
    

    否则,“>>”将被视为单个标记。

    【讨论】:

      【解决方案3】:
      std::vector<std::vector<double> > v2;
      

      您需要添加一个空格,否则它将被解释为>>运算符。

      【讨论】:

        猜你喜欢
        • 2012-07-16
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-02-17
        • 2011-11-15
        • 1970-01-01
        相关资源
        最近更新 更多