VS 2012模板错误

时间:2012-07-30 11:05:53

标签: c++ string templates marshalling visual-studio-2012

我一直在使用this code来编组C ++ / CLI中的字符串一段时间。最近我已经更新到VS 2012 RC试用了。我真的很喜欢这个简单的设计,但是我的项目中没有一个包含clix.h。它在2010年运作良好......可能是什么问题?谢谢您的回答!

这是编译器输出:

  1. 警告C4346:     'clix :: detail :: IsManagedString :: Result'dependent name是     不是一种类型。
  2. 错误C2988:无法识别的模板声明/定义
  3. 错误C2059:语法错误:'<'
  4. 错误C2039:'结果':不是'`global namespace''
  5. 的成员
  6. 错误C2143:语法错误:缺少';'在'}'之前
  7. 代码块错误在:

    typename detail::Select<detail::IsManagedString<SourceType>::Result>::Type<
    typename detail::StringTypeSelecter<encoding>::Type,
    System::String ^>::Result marshalString(SourceType string) {
    // Pass on the call to our nifty template routines
    return detail::StringMarshaler<
      detail::IsManagedString<SourceType>::Result ? detail::CxxFromNet : detail::NetFromCxx
    >::marshal<encoding, SourceType>(string);
    }
    

    示例,源文件:

    #include "clix.h"
    int main()
    {
    }
    

    可在此link上找到Clix标头文件。

1 个答案:

答案 0 :(得分:2)

你可能刚刚在我的博客上发布了这个问题,它没有被遗弃或任何事情:)

我碰巧安装了Visual Studio 2012 RC并修复了该问题。您可以在链接的位置找到新版本的clix标题。

背景:对于嵌套模板中的typedef,Microsofts新编译器看起来有点挑剔,其父模板专门针对整数类型。无论如何,我发现了一种适用于Visual C ++ 2010和Visual C ++ 2012 RC的方法。