我看了一些GCC bugreport和那里的人在谈论“vstring”。搜索WEB我来通知http://gcc.gnu.org/onlinedocs/libstdc++/libstdc++-html-USERS-4.2/vstring_8h.html。什么是GCC的“vstring”?
有人可以详细说明它的用途和用途吗?为什么使用它而不是std :: string?
我看了一些GCC bugreport和那里的人在谈论“vstring”。搜索WEB我来通知http://gcc.gnu.org/onlinedocs/libstdc++/libstdc++-html-USERS-4.2/vstring_8h.html。什么是GCC的“vstring”?
有人可以详细说明它的用途和用途吗?为什么使用它而不是std :: string?
GCC的vstring
是一个多功能的字符串类,它是在GCC 4.1的libstdc++
实现中引入的。
它与std::basic_string
兼容,用这些附加细节:提供
vstring_fwd.h
。DR431是Library Working Group Defect Report 431,与选项3恰似实现的类更好的支持分配器,以便更好地交换和其他分配相关的操作。
基本的细节从GCC 4.1's release notes,在运行时库部分。
编辑:
看起来好像这个扩展的初衷是提供一个C++ 11 std::string
实现的基础。 GCC/libstdC++贡献者Paolo Carlini在GCC Bug Report中评论说<ext/vstring.h>
包含下一个std::string
的非参考计数实验版本。注释日期2012年4月12日:
我们试图解释的是,这种问题是众所周知的,更多或更少的 ,影响任何引用计数实现... 这不是情况下,当不使用引用计数确实也将不是在新的实施
std::string
这 目前我们正在展示为<ext/vstring.h>
使用(根据新的C++标准11) ...
发明它的理由是什么?它最终会成为std :: string的实现吗? –
@ JohannesSchaub-litb - 我相信这是'ext/vstring.h'的最初目的,它会提供一个非引用计数的字符串实现,最终会成为默认的(或作为基础)一个新的std :: GCC C++ 11实现的字符串实现。在GCC邮件列表和错误报告中有各种各样的评论,似乎指向这一点,就像这样的评论:http://gcc.gnu.org/bugzilla/show_bug.cgi?id=52938#c5和这个:http:// old.nabble.com/Re%3A--RFC--C%2B%2B1x-breaking-the-ABI-in-one-more-place-%3A%28-p28618810.html。这和我所知道的一样多,没有问。 – birryree
http://gcc.gnu.org/ml/libstdc++/2012-01/msg00064.html意味着它尚未成为'std :: string'实现的唯一原因是ABI兼容性约束。 – zwol
您提供的链接位于顶部*“此文件是标准C++库的GNU扩展。”*当然,这并不能完全回答您的问题。 –
如果内存服务,那是/ std :: string'的实验重新实现,它具有相同的接口但是不同的内核。该文件在2005 - 2007年有版权日期,此后一直没有;建议在该时间段内搜索['libstdC++'邮件列表存档](http://gcc.gnu.org/ml/libstdc++/)。 – zwol