Tag: c ++ 11

C ++ 0x – lambda表达式看起来和Java的匿名内部类一样吗?

我在c ++和Java上下文中对lambda表达式的解释是否正确?

C ++ Rvalue引用和移动语义

C ++ 03存在可能隐式发生的不必要副本的问题。 为此,C ++ 11引入了rvalue references并move semantics 。 现在我的问题是,这个不必要的复制问题是否也存在于C#和java等语言中,还是只是一个C ++问题? 换句话说,与C#或Java相比, rvalue references使C ++ 11更高效? 就C#而言(允许运算符重载),假设我们有一个数学向量类,我们就像这样使用它。 vector_a = vector_b + vector_c; 编译器肯定vector_b + vector_c转换为某个临时对象(让我们称之为vector_tmp )。 现在我不认为C#可以区分临时右值(例如vector_tmp或左值(例如vector_b ,因此我们必须将数据复制到vector_a ,这可以通过使用rvalue references和在C中move semantics来轻松避免。 ++ 11。

如何使用SWIG包装std :: function对象?

我已经看到了很多类似的问题,但是没有找到解决我特定问题的方法。 我试图SWIGify一些使用std :: function的C ++ 11代码,所以我可以在我的Java应用程序中使用它。 我遇到过像这样的共享指针: virtual std::shared_ptr getTheThing(unsigned short thingID); 并使用shared_ptr指令成功处理它们,如下所示: %shared_ptr(some::ns::TheThing); 我遇到过这样的共享指针向量: virtual std::vector<std::shared_ptr> getAllTheThings() const = 0; 并使用如下模板成功处理它们: %template(ThingVector) std::vector<std::shared_ptr>; 现在我有一个像这样的方法: void registerThingCallback(std::function<void(std::shared_ptr) > func); 我无法让SWIG正确包装它。 我已经尝试使用%回调,导演,%模板和%内联function代码,因为我已经看到所有这些事情的例子,但是还没有能够得到任何似乎接近工作的东西。 如果有帮助(消毒和减少),这里有一个关于函数调用的更多上下文: thing_callback.h #include namespace some { namespace ns { /** * Hold some callbacks. */ class ThingCallbacks { public: /** * Registers a callback […]