Tag: 提升

Rails的ActiveSupport:如何断言提出了一个错误?

我想testing我的模型之一,引发特定错误的function。 该函数看起来像这样: def merge(release_to_delete) raise "Can't merge a release with itself!" if( self.id == release_to_delete.id ) raise "Can only merge releases by the same artist" if( self.artist != release_to_delete.artist ) #actual merge code here end 现在我想做一个断言,当我调用这个函数的一个参数,导致这些exception,实际上是抛出exception。 我正在查看ActiveSupport文档,但我没有find任何有希望的。 有任何想法吗?

boost :: lock_guard vs boost :: mutex :: scoped_lock

哪一个是首选boost::lock_guard或boost::mutex::scoped_lock ? 我正在使用Boost.Thread,希望在C ++ 11线程变为可用时转向它。 scoped_lock是下一个c ++标准的一部分吗? 有什么优势比其他优先? 注意 :我知道scoped_lock只是lock_guard的typedef 。 编辑:我错了scoped_lock 不是 lock_guard typedef 。 这是unique_lock的typedef 。

将C ++ API公开给Python

我目前正在做一个项目,我不得不用Python来包装C ++类,以便能够编写脚本。 所以我的具体经验也涉及在我们的程序中embeddedPython解释器。 我试过的select是: Boost.Python的 我喜欢Boost.Python生成的清洁API,但事实上,它会要求用户安装额外的依赖关系,使我们切换到SWIG。 痛饮 SWIG对我们的主要优势是它不需要最终用户安装它来使用最终的程序。 你曾经做过什么,你有什么经验呢?

如何只使用boost来将string编码为base64?

我试图快速编码一个简单的ASCIIstringbase64(使用boost :: asio的基本HTTP身份validation),而不是粘贴在任何新的代码或使用超出推广任何库。 简单的签名看起来像: string Base64Encode(const string&text); 我再次意识到algorithm很简单,有很多库/例子,但我正在寻找一个干净的例子。 我发现序列化提升,但没有明确的例子,或从谷歌。 http://www.boost.org/doc/libs/1_46_1/libs/serialization/doc/dataflow.html 这可能没有明确添加实际base64algorithm到我的代码?

提升,共享ptr vs弱ptr? 哪个使用时?

在我目前的项目中,我广泛使用了boost::shared_ptr 。 最近我的队友也开始使用weak_ptr 。 我不知道使用哪一个,什么时候使用。 除此之外,如果我想将weak_ptr转换为shared_ptr ,我该怎么做。 在weak_ptr上创build一个shared_ptr的锁会影响我的代码在其他线程?

C ++线程池

什么是一个好的开源的C ++线程池实现在生产代码(类似boost)? 请提供您自己的示例代码或示例代码使用情况的链接。

官方的“Boost library”支持Android和iOS?

这个问题是延续到我应该select在Android Android的Boost的Asio或Aysnc套接字线程? 问: Boost库旨在广泛使用,并可用于各种应用程序,但尚未提供针对Android和iOS的官方支持 有没有像embedded式设备不优化背后的任何特定原因? 或者其他原因? 任何机构是否知道在Android或iOS上使用Boost构build的任何应用程序? build议使用boost库来进行networking密集型应用程序,这种应用程序会产生multithreading通信? FYI ..我一直使用下面的链接来创build一个示例Android应用程序,但不成功:( https://github.com/MysticTreeGames/Boost-for-Android http://www.codexperiments.com/android/2011/05/tips-tricks-building-boost-with-ndk-r5/ 在Android中包含Boost C ++库 如何在Android NDK和STLport中使用boost库(包括shared_ptr) https://sites.google.com/site/fourdollars/android/android-mk https://groups.google.com/forum/?fromgroups=#!topic/android-ndk/4lxhsKFe7Ho http://www.crystax.net/trac/ndk/ticket/6 Android NDK R5和C ++exception的支持 提前致谢。

哪种devise模式利用了JavaScript的提升行为?

Ben Cherry的优秀文章充分说明了JavaScript的提升 。 然而,我的问题是,我不能想象这个臭名昭着的混淆的肇事者的用例。 请说明是否有一种devise模式实际上利用了这种语言function。 其次,JavaScript的独特之处在于范围吗? 更新 —我添加一个满足我的好奇心的答案赏金: 哪个devise模式实际上利用了JavaScript的提升行为? 我明白为什么 JavaScript支持提升,但我想知道如何利用此function 。

使用大型库固有地使较慢的代码?

我有一个心理抽象,这使得我不愿意在C和C ++等低级语言中使用大型库(如GLib或Boost )。 在我看来,我想: 那么这个图书馆就有上千个人工小时,而且这个图书馆是由那些比以往任何时候都更了解这门语言的人创造出来的。 他们的作者和粉丝们说,图书馆是快速可靠的,function看起来非常有用,它肯定会阻止我(重)重新发明轮子。 但是,该死的,我永远不会使用该库中的每个function。 它太大了,多年来可能会变得臃肿; 这是我的计划需要拖延的另一个球链。 Torvalds的咆哮 (虽然有争议)并不完全让我放心。 我的思想有没有基础,还是我只是不合理和/或无知? 即使我只使用一个或两个大型库的function,通过链接到该库我会承担运行时性能开销? 我相信这也取决于具体的图书馆是什么,但是我一般都很想知道大型图书馆是否会在技术层面上内在地引入低效率。 当我没有技术知识知道自己是否正确的时候,我厌倦了这种痴迷和担心。 请把我从痛苦中解救出来!

如何故意删除一个boost :: shared_ptr?

我有很多boost::shared_ptr<MyClass>对象,并在某些时候我故意要delete其中的一些来释放一些内存。 (我知道那时我将永远不需要指向MyClass对象了。)我该怎么做? 我猜你不能用我用get()得到的原始指针调用delete() get() 。 我在boost::shared_ptr看到了函数get_deleter(shared_ptr<T> const & p) ,但是我不确定如何使用它,并且它旁边的实验就是这样说的。 (我认为我有提升1.38。) 也许只是分配一个新的空的boost::shared_ptr的variables? 这应该扔掉旧的价值,并删除它。