在Visual Studio 2012中修复的STL错误

在帕特上周关于 在Visual Studio 2012中修复的MFC错误 (又名VC11),我认为STL的类似列表会很有趣:

null
身份证件 职务
492128 std::locale构造函数通过“setlocale()”修改全局区域设置
492561 STL流不能同时使用
498533 iostream应该使用其嵌入语言环境的代码页,而不是当前的c语言环境
506966 新的警告4986在警告级别4时阻止干净编译
524342 在Visual C++中实现STD::Max
532883 VisualC++:不总是签名
532897 VC-RC中由无符号long构造位集的问题
533131 std::deque中的错误。popu front()后迭代器的不一致失效
533464 VC10发行候选中的
534457 C++ Map < tuple <…>,v>编译问题
534756 std::isu函数不适用于rvalue引用类型
539946 搜索失败,出现调试断言
540098 non const operator()和bind有问题
540813 添加对新C++ 0x库的支持
541226 C++缺陷报告445的实现
548693 VisualC++:使用/J时数值限制< char > min / max不正确
552541 Visual C++ 2010中的库或编译器缺陷
553629 Visual C++在PurthBead中强制转换为字符
556348 C++编译器零故障?
557117 STD:VisualC++ 2010中的无序序集相等性比较
558044 std::copy不应在u First==u Last时检查u Dest
558339 tr1:regex在某些正则表达式上的行为与vs2008和vs2010不同
558993 std::pair成员不是std::pair的成员
560987 在VisualC++ 2010中,STD::Tr1::SouffLyOrthOracle引擎错误地定义了MIN和MAX成员,使类(和STD::Tr1::KuuthHyb)不可用。
560994 在VisualC++ 2010中,STD::Tr1:: DisteTyl分发和STD::Tr1::NoffigyBIOMIALIL分布缺少嵌套的输入类型类型,使它们不能与STD::Tr1::ValueTyx生成器不可用。
565500 用/MDD和/VD2编译时C++运行时崩溃
565748 在C++ 0x中包含支持编译时间的Rational算法
566516 std::ifstream/std::ofstream更改双值
567859 VisualC++:STD::调试配置中无序的映射析构函数性能
568054 std::useu facet会干扰对FatalExit的后续调用
569997 [VC10]编译器将std::sharedu ptr引用为std::tr1::sharedu ptr
571397 C++SETFEP不能应用于WFSCORT——刺激性错误消息
576750 [ C++ 0x] STD::toSype是不符合的
577672 由于vc10中的stl更改,调试版本中的迭代器分配运算符崩溃
596771 type_info::before返回int类型而不是bool
598887 无法为set::insert提供常量迭代器
603381 VS2010 STL for每个实现都会中断现有代码
606746 过载分辨率不正确
612692 标准::位集
616702 运算符>>用于将多字节字符集作为区域设置的基本u istream崩溃
616827 嵌套的std::bind函数产生错误(没有对正在编译的文件的引用)
618807 通过std::函数变量调用绑定lambda
621653 在intsafe之后包含stdint会生成警告
626291 STL hash元素不能散列自定义分配的字符串
627639 即使在x64平台上,fstream也使用32位int作为posu类型
628197 当擦除到最后时,std::string::erase非常慢,这会影响std::string::resize
633809 标准::螺纹
633905 VisualC++:不成形的UNQuYGYPTR函数调用语法
635833 std::uniformu int分布和std::uniformu int未返回正确值
635837 std::uniformu int分布的低值,设置为负数时std::uniformu int不出现
640602 VS2010调试器:监视带有u ITERATOR u DEBUG u LEVEL=0的std::string不起作用
640619 移动构造可以分割对象
640961 VisualC++:STD中的参数转发错误::绑定函数调用方
641845 vs2010中的std::regex bug
642277 vs2010中的std::regex bug
642557 [随机]均匀分布会产生超出范围的结果
642600 系统错误::what()返回不正确的值
645116 VC10 STL:多个参数未实现安放函数
645641 由于非法使用迭代器,tr1 regex在调试生成中崩溃
646532 strsafe.h使用STL头文件触发许多警告
648543 tr1::regex与重复的有效模式不匹配
649268 std::bind和std::function生成大量副本。
649274 std::bind和std::function不支持移动
649531 显式实例化共享u ptr时出现编译错误
650567 未包含的std::locale::facet和std::locale::Locimp析构函数会导致崩溃
651285 ref与重载运算符的类一起工作不正确&
668921 std::数字u限制::max u digits10值8错误,应为9
671328 VisualC++:用STD::用户定义的绑定表达式:绑定
674424 tr1 regex不区分大小写搜索不工作
674652 MSVC 2010中std::minmax的不一致行为
680313 合并使源数据无效,因为它使用移动语义
683483 MFC C++在调试配置中编译使用CODECVTTUTF8失败
685726 INT64u C和UINT64u C应该以更跨平台的方式定义
688731 std::bind with std::reference_wrapper参数对带有template operator()的函数对象不起作用
688797 std::线程崩溃,错误为“f:ddvctoolscrtu bldselfu x86crtsrc hrmutex.cpp(206):解除无主互斥锁的锁定”
689342 无序映射比vc++2010版本慢千倍
689689 VisualC++(VS2010):均匀分布的不正确返回值
692248 Visual C++ OSTRIGSWORD和IOSKASEAS::应用程序中断
692988 std::vector::resize应采用常量引用
694663 检查内部std::vector::_Reserve()触发整数下溢,无法检测传递给std::vector::resize()的无效参数
694704 std::vector::reserve()包含针对最大u大小的次优检查
694705 std::vector::_Insert()包含一个针对最大大小的次优检查
694881 std::vector::_Reserve()包含一个针对最大u大小的次优检查
694887 std::vector::u Insert u n()包含一个与max u size次优的检查
695529 std::exceptionu ptr不满足NullablePointer的要求
696109 std::pair-move构造函数不符合标准,对引用有潜在的危险行为
696151 std::referenceu包装器不能与lambda函数一起使用
696316 std::deque::resize()注释中的输入错误
698286 std::begin和std::end ADL查找失败
705089 C++ STD::原子< >缺失构造函数
705152 此std::codevt模板的实例化不符合std::codevt::out的标准要求
705993 标准库的defaultvis.natvis visualizers中存在不正确的类型名引用
707067 未能分析表达式:类“std::u Refu countu base”没有成员“Uses”
712897 xstddef中的##VAR_类型中的##参数无效
712984 当min0为负时,均匀分布产生不正确的结果
714853 valarray运算符[]const
716468 从makeu shared调用CObject派生类时从构造函数抛出堆损坏
716995 makeu shared需要默认构造函数来编译
718865 STL:cmath未将hypot提升到std名称空间
721456 调试器无法显示std::string的内容–“
721786 对于64位平台,stdint.h uintpttru MAX的值与UINT32u MAX的值相同
723427 互斥中的编译错误
726398 使用std::thread类创建线程会导致应用程序崩溃
727368 std::reference包装器无法包装对抽象类对象的引用
727374 std::exceptionu ptr只能部分与null比较
729760 对于具有两个或多个参数的Callable,异步编译失败。
730454 C++ 11标准库中可变模板的仿真不起作用
732529 不使用函子的结果
733204 std::映射调试可视化程序不适用于vs2011
733222 上的编译器错误:304
733729 调试断言“字符串下标超出范围”对于[size()]不正确
734888 无序集合中的共享u ptr
735224 VS2011测试版激发了关于解锁无主互斥锁的断言
735731 std::async(std::launch::async,…)的行为与std::thread(…)不同
735732 向量插入问题的STL向量
735875 std::putU time输出错误
736356 传递给:async的参数不能超过两个。
736924 打包任务和线程编译错误
737812 std::thread不接受std::move
738919 std::locale::global()/std::locale()线程安全问题
739016 std::makeu shared call error(c++)
742642 重载函数std::string to_string(int val)的用法不明确;
742856 std::async的错误?
742965 运算符<对于成员数大于u VARIADIC u MAX的元组不正确
745614 :使用’/Za’编译时出现错误C2382(禁用语言扩展)
745643 “std::genericu category”、“std::iostreamu category”、“std::systemu category”上出现错误C2382
745967 在Visual C++ 2012 RC中用标准头文件< StulsError >编译错误C23

关于 各种神秘话题:

这个127个bug的列表包含了我在“旧数据库”和“新数据库”中发现的所有bug 数据库(我们使用Team Foundation Server进行bug跟踪和版本控制,但是几年前我们切换了TFS数据库,使考古探险“有趣”)是由Connect创建的,针对C++标准库提出的,由我解决,作为固定的,并固定在VC10 SP1和VC11 RTM之间。  相当全面, 但它可能不是绝对详尽的。  我特意排除了所有非连接错误(Connect、我自己和其他微软员工发现的修复错误总数约为330个——这还不算真正的错误,但从未被跟踪过的东西)和私有连接错误(一些提交连接错误的人会将它们标记为私有,我建议不要这样做,除非bug的repro包含了你不想让世界看到的信息)。  此外,我也没有尝试将那些被解析为已修复的、实际上是重复的bug进行分组(例如,通过全面重写修复的许多统一分布bug)。

我已经从提交者那里展示了bug的原始标题,尽管它们经常在内部重命名。  这几乎没什么意思(我喜欢某种格式,所以我的bug排序很好),但我可以分享一个例外。  Connect#533464作为“VC10发行候选中的头”到达。  我把它改进为“:僵尸头饥饿的美味大脑”。  (在VC10中,我在产品中留下了一个不起作用的头,结果搞砸了。)

最后,您可能想知道这些bug都是从哪里来的。  (我把所有的STL bug都放在个人身上,我不希望有人看到这个列表,到处想“哇,STL真是个bug”。)  我们的STL实现非常可靠,但是它也非常庞大,必须处理各种各样的复杂情况。  C++ 11的搅动导致了两类错误:那些工作文件在我们实现它时说了一些虚假的东西(例如,这发生在tojStReg()、BITSET和Acsic())中, 以及那些允许比我们以前必须处理的更复杂的输入(通常是r值引用和只允许移动的类型)。  全新的特性(例如原子/线程/未来)带来了全新的bug。  用户经常会做一些“奇怪的事情”(比如晦涩难懂的编译器开关,比如/J和/vd2)。  而且由于STL无法控制用户的性能要求有多高,因此在普通应用程序代码中进行不成熟的优化会被视为STL中完全合法的性能缺陷。  (例如,一位用户建议在vector中进行一些微优化,并在VC11中实现。)

底线是我们在不断改进STL,所以您应该总是尽快升级到最新的主要版本和服务包,并通过 微软连接 真的很有帮助。

图片[1]-在Visual Studio 2012中修复的STL错误-yiteyi-C++库 斯蒂芬T。拉瓦维 高级开发人员——Visual C++库 stl@microsoft.com
© 版权声明
THE END
喜欢就支持一下吧
点赞0 分享