Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/string/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ VS 2012模板错误_C++_String_Templates_Marshalling_Visual Studio 2012 - Fatal编程技术网

C++ VS 2012模板错误

C++ VS 2012模板错误,c++,string,templates,marshalling,visual-studio-2012,C++,String,Templates,Marshalling,Visual Studio 2012,我已经用C++/CLI封送字符串有一段时间了。最近我更新到VS 2012 RC来试用它。我真的很喜欢这个简单的设计,但是我的所有包含clix.h的项目都无法编译。它在2010年非常有效。。。有什么问题吗?谢谢你的回答 以下是编译器输出: 警告C4346: 'clix::detail::IsManagedString::Result'依赖名称为 不是一种类型 错误C2988:无法识别的模板声明/定义 错误C2059:语法错误:“您可以在我的博客上发布这个问题,它没有被放弃或其他任何东西:) 我碰巧

我已经用C++/CLI封送字符串有一段时间了。最近我更新到VS 2012 RC来试用它。我真的很喜欢这个简单的设计,但是我的所有包含clix.h的项目都无法编译。它在2010年非常有效。。。有什么问题吗?谢谢你的回答

以下是编译器输出:

  • 警告C4346: 'clix::detail::IsManagedString::Result'依赖名称为 不是一种类型
  • 错误C2988:无法识别的模板声明/定义

  • 错误C2059:语法错误:“您可以在我的博客上发布这个问题,它没有被放弃或其他任何东西:)

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


    背景:微软的新编译器似乎对嵌套模板中的typedef有点挑剔,因为嵌套模板的父模板专门用于整数类型。在任何情况下,我都发现了一种在Visual C++ 2010和Visual C++ 2012 RC中使用的方法。阅读请添加一个最小的编译示例,该示例将问题显示为一个简单的项目,该项目在vs 2012中再现了该问题。请注意,我不知道是否能在vs 2010中复制它。@rhalbersma在本例中应该是“一个最小的、非编译的示例”:@Zylius只提取重要部分。我怀疑是否有人会下载项目并阅读近200行代码来回答您的问题。非常感谢您不断更新。这是一个伟大的代码!
    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()
    {
    }