问题标签 [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.

0 投票
2 回答
1925 浏览

c++ - std::aligned_storage 的分配目标(堆栈还是堆?)

我一直在尝试了解 TR1 的附加功能,即对齐存储。在阅读以下文档N2165N3190N2140时,我一生都看不到清楚描述所使用内存的堆栈或堆性质的声明。

我查看了 msvc2010、boost 和 gcc 提供的实现,它们都提供了一个以使用联合为中心的基于堆栈的解决方案。

简而言之:

  • 是否定义了对齐存储实现使用的内存类型(堆栈或堆),或者它总是意味着基于堆栈?

  • 并且,定义/确定它的具体文件是什么?

注意:在 MSVC10 中,以下是对齐存储类型的定义,在这种情况下,如果对齐存储是自动变量,则在堆栈上创建数据(_Val,_Pad):

注意:这不是一个微不足道的问题。请在发布答案之前尝试并理解问题。

0 投票
4 回答
24692 浏览

c++ - std、tr1 和 boost(作为命名空间和/或库)之间有什么区别?

我最初以为它们都是一样的,但结果证明是错误的。那么有人能简单解释一下这三者之间的区别吗?例如:

  1. std::bind(最新的,下一代 C++ )
  2. std::tr1::bind(旧的,C++ std 的扩展)
  3. boost::bind(完全独立的库)

std::shared_ptr, std::tr1::shared_ptr, 和boost::shared_ptr, ...等

更新

bindshared_ptr是有助于澄清我的问题的例子。我的目的是了解这三个命名空间之间的一般差异。所有三个名称空间中都存在多个库,显然bind是一个示例,以及shared_ptr.

我应该坚持哪些命名空间?我个人更喜欢库,std::因为它将成为 C++ ( C++0x ) 的下一个标准。

0 投票
1 回答
651 浏览

c++ - tr/regex c++ library - 正则表达式模式的定义

当我使用 tr1/regex 库时,我应该如何定义正则表达式模式?

不工作...编译时出现错误:'regex'没有命名类型

0 投票
2 回答
260 浏览

c++ - 正则表达式匹配

我有一个检查功能,输入的行是否为“OK”。

该函数返回假。为什么?

0 投票
4 回答
860 浏览

c++ - 智能指针:运行 WinXP-Sp3 的 VS 9 中的运行时崩溃

我在以下代码中遇到运行时崩溃并且也无法调试。请查看并让我知道发生了什么。

我已经包含了所有标题,并且程序编译正常。这是我得到的错误:

CppConsole.exe - 未找到入口点 程序入口点 ?_Xweak@tr1@std@@YAXXZ 无法在动态链接库 MSVCP90D.dll 中找到

如果我注释掉这一行

该程序运行而不会崩溃。

更新:问题可以暂时关闭。我将尝试安装 VS 功能包并查看程序执行时没有任何崩溃的天气。

0 投票
2 回答
1500 浏览

c++ - R 值插入不适用于 unordered_map

我正在使用来自存储库的最新可用 GCC 构建。我决定使用它是因为一些额外的 C++0x 特性。但是现在我坚持了一些应该起作用的东西——我想通过 r 值添加新元素来映射。简化代码,演示问题:

请注意,当X用一些原始类型(如int代码)替换类时,编译并工作得很好。

在我的生产代码中,对应于 X 的类也没有复制构造函数。

错误消息(就像所有与模板相关的错误一样)很长且不可读,我不确定把它放在这里是否是个好主意。如果您需要错误消息,请通知我,因此我将更新此问题。消息的最后一部分很有趣:

此外,这应该可以工作,因为已经修复了类似的错误[C++0x] 在关联和无序容器中实现 emplace*

也许我做错了什么?在报告之前,我想确定这是 GCC 或 libstdc++ 错误。

0 投票
2 回答
286 浏览

function - for_each 绑定向量的向量调整大小

这是我的第一个问题。我放弃了,将为此使用手卷函子,但我很好奇它应该如何完成。下面的人为示例旨在通过用空值填充向量中的所有向量,将它们的大小调整为 9。指示的行会导致 MinGW GCC 4.5.0 出现大量模板错误。我尝试了几种不同的排列,但只在下面发布了我认为“最接近正确”的代码。应该怎么写?注意,我想保留 resize 的两个参数版本。

非常感谢您的意见。

0 投票
2 回答
10230 浏览

c++ - C ++正则表达式匹配没有标点符号的单词

我搜索,找不到任何东西。为了不再浪费我的时间在答案对其他人来说是显而易见的机会上,我在这里问。到目前为止唯一有用的站点是这个站点:http: //softwareramblings.com/2008/07/regular-expressions-in-c.html,但示例过于简单。我正在使用 Visual Studio 2010。

预期输出为:

一些
单词

一些
标点符号

谢谢。

0 投票
1 回答
464 浏览

c++ - 在编译时检查 tr1 数组的大小

我刚刚发现 boost::array::static_size 不是 tr1::array 的一部分,或者至少它不在我的实现中(GCC 4.2.1),我在任何 tr1 文档中都找不到它。

是否有另一种方法可以对 tr1 数组中的元素数执行编译时断言?

例如,以下适用于 boost 数组,但不适用于 tr1 数组:

我知道我可以只使用 boost 的数组,但我很好奇。

如果没有办法,也许有人知道为什么 tr1 中没有包含 static_size ?它只是在创建 tr1 后添加到 boost 的一个功能吗?

0 投票
3 回答
285 浏览

c++ - 使用 C++ 类,例如可以在多个不同位置定义的函数

在 C++0x、C++03 TR1 和 boost 之间,可以根据编译器在 3 个不同的地方定义函数和绑定之类的东西,例如,对于 VC pre VC9 功能包,你有 boost 版本,然后你把它们放进去,但是在 std::tr1:: 命名空间中,VC10 将其移动到 std:: 命名空间。

目前我现有的代码在 boost:: 命名空间中使用旧的 bo​​ost 版本,但是因为对于我的许多应用程序和库,我使用的所有 boost 东西现在都在 tr1 和 C++0x 中,如果可能的话,id 就像删除 boost 依赖从那些,同时保持与旧编译器版本的向后兼容性。

但是我不确定如何让我的代码定位、包含然后能够访问正确的版本:(我考虑过的一件事是使用像 _MSC_VER 这样的宏来查看编译器是否包含我想要的类,(回退到 tr1,然后根据需要进行提升),然后使用“using somenamespace::someclass;”东西将有问题的类移动到 std:: 命名空间中。

问题是似乎在某些情况下这可能会破坏一些东西,我什至不确定如何判断 VC9 是否安装了它的功能包或 SP1 :( ,也许提供我自己的功能性.hpp 来实现所需的“魔法”?

主要的是我想开始为新标准编写代码,但在某种程度上它仍然可以在旧编译器上以最小的努力工作。