Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/visual-studio-2010/4.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++ 为什么VisualStudio2010会在Boost 1.42.0中抛出此错误?_C++_Visual Studio 2010_Boost - Fatal编程技术网

C++ 为什么VisualStudio2010会在Boost 1.42.0中抛出此错误?

C++ 为什么VisualStudio2010会在Boost 1.42.0中抛出此错误?,c++,visual-studio-2010,boost,C++,Visual Studio 2010,Boost,我正在尝试重新编译应用程序,该应用程序在VisualStudio2005和VisualStudio2008中编译良好,警告级别为4。 由于错误(如下所示)来自std:tr1,我认为存在一些冲突,但不确定如何修复。我的第一个想法是删除boost的所有引用,例如,但随后我得到一个错误,它找不到format方法。 这里有一个错误:(不确定它的意思) 有什么想法、建议、解决方案吗? 谢谢 编辑:在开始处我看到一条消息:未知编译器版本-请运行配置测试并报告结果 EDIT2:我认为导致此错误的代码:(更改为

我正在尝试重新编译应用程序,该应用程序在VisualStudio2005和VisualStudio2008中编译良好,警告级别为4。 由于错误(如下所示)来自std:tr1,我认为存在一些冲突,但不确定如何修复。我的第一个想法是删除boost的所有引用,例如,但随后我得到一个错误,它找不到format方法。 这里有一个错误:(不确定它的意思) 有什么想法、建议、解决方案吗? 谢谢

编辑:在开始处我看到一条消息:未知编译器版本-请运行配置测试并报告结果

EDIT2:我认为导致此错误的代码:(更改为保护无辜者) EDIT3:我更新了错误消息,即添加了更多。但是我收到了更多的错误消息,比如这条消息。因此有一个更大的问题

 !m_someMap.insert( std::make_pair( "somestring", SomeClass::isTrue ) ).second
....
.....
 inline bool isTrue ( const IDog & dog ) { return s.IsDogTrue(); }



1>c:\program files (x86)\microsoft visual studio 10.0\vc\include\type_traits(197): error C2752: 'std::tr1::_Remove_reference<_Ty>' : more than one partial specialization matches the template argument list
1>          with
1>          [
1>              _Ty=bool (__cdecl &)(const IDog &)
1>          ]
1>          c:\program files (x86)\microsoft visual studio 10.0\vc\include\xtr1common(356): could be 'std::tr1::_Remove_reference<_Ty&&>'
1>          c:\program files (x86)\microsoft visual studio 10.0\vc\include\xtr1common(350): or       'std::tr1::_Remove_reference<_Ty&>'
1>          c:\program files (x86)\microsoft visual studio 10.0\vc\include\type_traits(962) : see reference to class template instantiation 'std::tr1::remove_reference<_Ty>' being compiled
1>          with
1>          [
1>              _Ty=bool (__cdecl &)(const IDog &)
1>          ]
1>          c:\program files (x86)\microsoft visual studio 10.0\vc\include\utility(26) : see reference to class template instantiation 'std::tr1::decay<_Ty>' being compiled
1>          with
1>          [
1>              _Ty=bool (__cdecl &)(const IDog &)
1>          ]
1>         C:\(PATH)\...(915) : see reference to class template instantiation 'std::tr1::_Unrefwrap<_Type>' being compiled
1>          with
1>          [
1>              _Type=bool (__cdecl &)(const IDog &)
1>          ]
1>c:\program files (x86)\microsoft visual studio 10.0\vc\include\type_traits(965): error C2528: 'abstract declarator' : pointer to reference is illegal
1>c:\program files (x86)\microsoft visual studio 10.0\vc\include\type_traits(349): error C2528: 'type' : pointer to reference is illegal
1>          c:\program files (x86)\microsoft visual studio 10.0\vc\include\type_traits(967) : see reference to class template instantiation 'std::tr1::add_pointer<_Ty>' being compiled
1>          with
1>          [
1>              _Ty=bool (__cdecl &)(const IDog &)
1>          ]
1>c:\program files (x86)\microsoft visual studio 10.0\vc\include\type_traits(197): error C2752: 'std::tr1::_Remove_reference<_Ty>' : more than one partial specialization matches the template argument list
1>          with
1>          [
1>              _Ty=bool (__cdecl &)(const char *,int,const char *,std::string &)
1>          ]
!m_someMap.insert(std::make_pair(“somestring”,SomeClass::isTrue)).second
....
.....
内联bool-isTrue(const-IDog&dog){返回s.IsDogTrue();}
1> c:\program files(x86)\microsoft visual studio 10.0\vc\include\type\u traits(197):错误C2752:“std::tr1::\u Remove\u reference”:多个部分专门化与模板参数列表匹配
1> 与
1>          [
1> _Ty=bool(u cdecl&)(const IDog&)
1>          ]
1> c:\program files(x86)\microsoft visual studio 10.0\vc\include\xtr1common(356):可以是“std::tr1::\u Remove\u reference”
1> c:\ProgramFiles(x86)\microsoft visual studio 10.0\vc\include\xtr1common(350):或“std::tr1::_Remove\u reference”
1> c:\ProgramFiles(x86)\microsoft visual studio 10.0\vc\include\type\u traits(962):请参阅对正在编译的类模板实例化“std::tr1::remove\u reference”的引用
1> 与
1>          [
1> _Ty=bool(u cdecl&)(const IDog&)
1>          ]
1> c:\ProgramFiles(x86)\microsoft visual studio 10.0\vc\include\utility(26):请参阅正在编译的类模板实例化“std::tr1::decay”的参考
1> 与
1>          [
1> _Ty=bool(u cdecl&)(const IDog&)
1>          ]
1> C:\(路径)\…(915):请参阅对正在编译的类模板实例化“std::tr1::\u Unrefwrap”的引用
1> 与
1>          [
1> 类型=bool(uuu cdecl&)(const IDog&)
1>          ]
1> c:\ProgramFiles(x86)\microsoft visual studio 10.0\vc\include\type\u traits(965):错误C2528:“抽象声明器”:指向引用的指针非法
1> c:\program files(x86)\microsoft visual studio 10.0\vc\include\type\u traits(349):错误C2528:“type”:指向引用的指针非法
1> c:\ProgramFiles(x86)\microsoft visual studio 10.0\vc\include\type\u traits(967):请参阅正在编译的类模板实例化“std::tr1::add\u pointer”的参考
1> 与
1>          [
1> _Ty=bool(u cdecl&)(const IDog&)
1>          ]
1> c:\program files(x86)\microsoft visual studio 10.0\vc\include\type\u traits(197):错误C2752:“std::tr1::\u Remove\u reference”:多个部分专门化与模板参数列表匹配
1> 与
1>          [
1> _Ty=bool(u cdecl&)(常量字符*,int,常量字符*,std::string&)
1>          ]

听起来VisualStudio可能在做一些你不知道的事情。我认为您可以将Microsoft编译器与IDE结合使用。您可以尝试每种编译器(VS2005/2008/2010)。此外,请尝试从源代码存储库中进行区分,以确保Microsoft没有“美化”您的代码


注意:在解决问题后,不必使用Code::Blocks。对于这个特定问题,它可能是一个很好的工具。

问题在于visual studio 2010,或者我应该说,对于添加到visual studio 2010 tr1中的其他模板,std::make_pair并不总是起作用。更改为配对,所有错误都神奇地消失了


因此,如果您在VC2010中使用std:make_pair时遇到模板问题,请将其更改为pair并指定模板参数。

所有错误都将从模板实例化中抛出。我们需要查看调用Boost的代码才能对此进行诊断。我想我可能必须使用visual studio 10构建Boost,让我试试。@ra170:不,编译过程中会抛出错误。缺少生成将是一个链接时错误。@ra170:我已重建了您的错误消息--wordwrap,它是因为您使用quote而不是最初销毁它的代码而安装的--现在很明显,错误消息也不完整。我们需要完整的错误消息。上面写着
std::tr1::\u Remove\u reference
。这是一个右值引用。这些都是VS 2010中新增的。我非常怀疑他们的std库是错误的,正如Billy所说,所以这些错误是没有意义的,除非你提供导致它们的代码。-1:没有回答OP的问题。此外,错误是由编译器而不是IDE引发的,这意味着消息不会在Code::Blocks中更改。编辑:VisualStudio不会“美化”代码。他说:至少他指出了什么可以被视为是一个错误的来源problem@chester89:在哪里?我看到的唯一建议是“不要使用Visual Studio”。@Billy:你怎么知道IDE在编译代码以解决某些编译器问题之前没有更改代码?您如何知道VS正在使用一些您不期望的奇怪附加选项调用编译器?另一个IDE可以排除这些问题。最后,我在哪里说过“不要使用Visual Studio”?再次阅读我的帖子,我实际上声明,在问题解决后,他不必使用code::blocks。这只是一个很好的故障排除工具。你在微软工作吗?