问题标签 [tr1]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c++ - std::aligned_storage 的分配目标(堆栈还是堆?)
我一直在尝试了解 TR1 的附加功能,即对齐存储。在阅读以下文档N2165、N3190和N2140时,我一生都看不到清楚描述所使用内存的堆栈或堆性质的声明。
我查看了 msvc2010、boost 和 gcc 提供的实现,它们都提供了一个以使用联合为中心的基于堆栈的解决方案。
简而言之:
是否定义了对齐存储实现使用的内存类型(堆栈或堆),或者它总是意味着基于堆栈?
并且,定义/确定它的具体文件是什么?
注意:在 MSVC10 中,以下是对齐存储类型的定义,在这种情况下,如果对齐存储是自动变量,则在堆栈上创建数据(_Val,_Pad):
注意:这不是一个微不足道的问题。请在发布答案之前尝试并理解问题。
c++ - std、tr1 和 boost(作为命名空间和/或库)之间有什么区别?
我最初以为它们都是一样的,但结果证明是错误的。那么有人能简单解释一下这三者之间的区别吗?例如:
std::bind
(最新的,下一代 C++ )std::tr1::bind
(旧的,C++ std 的扩展)boost::bind
(完全独立的库)
或std::shared_ptr
, std::tr1::shared_ptr
, 和boost::shared_ptr
, ...等
更新
bind
,shared_ptr
是有助于澄清我的问题的例子。我的目的是了解这三个命名空间之间的一般差异。所有三个名称空间中都存在多个库,显然bind
是一个示例,以及shared_ptr
.
我应该坚持哪些命名空间?我个人更喜欢库,std::
因为它将成为 C++ ( C++0x ) 的下一个标准。
c++ - tr/regex c++ library - 正则表达式模式的定义
当我使用 tr1/regex 库时,我应该如何定义正则表达式模式?
不工作...编译时出现错误:'regex'没有命名类型
c++ - 正则表达式匹配
我有一个检查功能,输入的行是否为“OK”。
该函数返回假。为什么?
c++ - 智能指针:运行 WinXP-Sp3 的 VS 9 中的运行时崩溃
我在以下代码中遇到运行时崩溃并且也无法调试。请查看并让我知道发生了什么。
我已经包含了所有标题,并且程序编译正常。这是我得到的错误:CppConsole.exe - 未找到入口点 程序入口点 ?_Xweak@tr1@std@@YAXXZ 无法在动态链接库 MSVCP90D.dll 中找到
如果我注释掉这一行
该程序运行而不会崩溃。
更新:问题可以暂时关闭。我将尝试安装 VS 功能包并查看程序执行时没有任何崩溃的天气。
c++ - R 值插入不适用于 unordered_map
我正在使用来自存储库的最新可用 GCC 构建。我决定使用它是因为一些额外的 C++0x 特性。但是现在我坚持了一些应该起作用的东西——我想通过 r 值添加新元素来映射。简化代码,演示问题:
请注意,当X
用一些原始类型(如int
代码)替换类时,编译并工作得很好。
在我的生产代码中,对应于 X 的类也没有复制构造函数。
错误消息(就像所有与模板相关的错误一样)很长且不可读,我不确定把它放在这里是否是个好主意。如果您需要错误消息,请通知我,因此我将更新此问题。消息的最后一部分很有趣:
此外,这应该可以工作,因为已经修复了类似的错误[C++0x] 在关联和无序容器中实现 emplace*。
也许我做错了什么?在报告之前,我想确定这是 GCC 或 libstdc++ 错误。
function - for_each 绑定向量的向量调整大小
这是我的第一个问题。我放弃了,将为此使用手卷函子,但我很好奇它应该如何完成。下面的人为示例旨在通过用空值填充向量中的所有向量,将它们的大小调整为 9。指示的行会导致 MinGW GCC 4.5.0 出现大量模板错误。我尝试了几种不同的排列,但只在下面发布了我认为“最接近正确”的代码。应该怎么写?注意,我想保留 resize 的两个参数版本。
非常感谢您的意见。
c++ - C ++正则表达式匹配没有标点符号的单词
我搜索,找不到任何东西。为了不再浪费我的时间在答案对其他人来说是显而易见的机会上,我在这里问。到目前为止唯一有用的站点是这个站点:http: //softwareramblings.com/2008/07/regular-expressions-in-c.html,但示例过于简单。我正在使用 Visual Studio 2010。
预期输出为:
一些
单词
和
一些
标点符号
谢谢。
c++ - 在编译时检查 tr1 数组的大小
我刚刚发现 boost::array::static_size 不是 tr1::array 的一部分,或者至少它不在我的实现中(GCC 4.2.1),我在任何 tr1 文档中都找不到它。
是否有另一种方法可以对 tr1 数组中的元素数执行编译时断言?
例如,以下适用于 boost 数组,但不适用于 tr1 数组:
我知道我可以只使用 boost 的数组,但我很好奇。
如果没有办法,也许有人知道为什么 tr1 中没有包含 static_size ?它只是在创建 tr1 后添加到 boost 的一个功能吗?
c++ - 使用 C++ 类,例如可以在多个不同位置定义的函数
在 C++0x、C++03 TR1 和 boost 之间,可以根据编译器在 3 个不同的地方定义函数和绑定之类的东西,例如,对于 VC pre VC9 功能包,你有 boost 版本,然后你把它们放进去,但是在 std::tr1:: 命名空间中,VC10 将其移动到 std:: 命名空间。
目前我现有的代码在 boost:: 命名空间中使用旧的 boost 版本,但是因为对于我的许多应用程序和库,我使用的所有 boost 东西现在都在 tr1 和 C++0x 中,如果可能的话,id 就像删除 boost 依赖从那些,同时保持与旧编译器版本的向后兼容性。
但是我不确定如何让我的代码定位、包含然后能够访问正确的版本:(我考虑过的一件事是使用像 _MSC_VER 这样的宏来查看编译器是否包含我想要的类,(回退到 tr1,然后根据需要进行提升),然后使用“using somenamespace::someclass;”东西将有问题的类移动到 std:: 命名空间中。
问题是似乎在某些情况下这可能会破坏一些东西,我什至不确定如何判断 VC9 是否安装了它的功能包或 SP1 :( ,也许提供我自己的功能性.hpp 来实现所需的“魔法”?
主要的是我想开始为新标准编写代码,但在某种程度上它仍然可以在旧编译器上以最小的努力工作。