我开始研究c++ 11的智能指针,我没有看到std::weak_ptr有任何有用的用途。有人能告诉我什么时候std::weak_ptr是有用的/必要的吗?

当一个函数接受一个shared_ptr(来自boost或c++ 11 STL)时,你是否传递它:foo(const shared_ptr<T>& p)或通过值:void foo(s

许多谷歌和stackoverflow的帖子都在这里,但我不明白为什么make_shared比直接使用shared_ptr更有效。有人能一步一步地向我解释创建的对象序列和两者所做的操作,这样我就能理解m

我试图构造一个std::线程的成员函数,不接受参数并返回void。我想不出任何可行的语法——无论如何编译器都会抱怨。实现spawn()以返回执行test()的std::线程的正确方法是什么?

在我看来,拥有一个“总是返回5的函数”破坏或稀释了“调用函数”的意义。必须有一个原因,或者需要这个功能,否则它就不会出现在c++ 11中。为什么会在那里?在我看来,如果我写一个函数,返回一个字面值,然

是否有一种容器适配器可以反转迭代器的方向,以便我可以使用基于范围的for-loop反向迭代容器?使用显式迭代器,我将转换如下:到这个:我想把它转换成::有这样的东西吗,还是我必须自己写?

c++ 11允许内联命名空间,其所有成员也自动位于封闭的命名空间中。我想不出任何有用的应用程序——谁能给出一个简短的例子,说明需要内联名称空间的情况,以及它是最常用的解决方案的情况?(此外,我不清楚在

c++ 11基于范围的for()循环的常见示例总是这样简单:在这种情况下,xyz是int型。但是,当我们有地图之类的东西时会发生什么呢?本例中变量的类型是什么:当要遍历的容器很简单时,看起来基于范围的

当我试图运行一个CMake生成的makefile来编译我的程序时,我得到的错误是c++ 98模式不支持基于范围的for循环。我尝试添加add_definitions(-std=c++0x)到我的CMa

你能用你自己的话解释一下STA和MTA吗?另外,什么是公寓线程,它们只与COM有关吗?如果有,为什么?