C++ VS 2012模板错误
我已经用C++/CLI封送字符串有一段时间了。最近我更新到VS 2012 RC来试用它。我真的很喜欢这个简单的设计,但是我的所有包含clix.h的项目都无法编译。它在2010年非常有效。。。有什么问题吗?谢谢你的回答 以下是编译器输出: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:语法错误:“您可以在我的博客上发布这个问题,它没有被放弃或其他任何东西:) 我碰巧
背景:微软的新编译器似乎对嵌套模板中的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()
{
}