草庐IT

long_ptr

全部标签

c++ - shared_from_this 导致 bad_weak_ptr

我正在尝试在asio中保留已连接客户端的列表。我已经从文档(http://www.boost.org/doc/libs/1_57_0/doc/html/boost_asio/example/cpp03/chat/chat_server.cpp)中改编了聊天服务器示例,这是我最终得到的重要部分:#include#include#include#include#include#includeusingboost::asio::ip::tcp;classtcp_connection;std::set>clients;voidadd_client(boost::shared_ptrclient

c++ - shared_from_this 导致 bad_weak_ptr

我正在尝试在asio中保留已连接客户端的列表。我已经从文档(http://www.boost.org/doc/libs/1_57_0/doc/html/boost_asio/example/cpp03/chat/chat_server.cpp)中改编了聊天服务器示例,这是我最终得到的重要部分:#include#include#include#include#include#includeusingboost::asio::ip::tcp;classtcp_connection;std::set>clients;voidadd_client(boost::shared_ptrclient

C++ std::unique_ptr:为什么 lambda 没有任何尺寸费用?

我正在阅读“有效的现代C++”。在std::unique_ptr相关的条目中声明如果自定义删除器是无状态对象,则不会产生大小费用,但如果它是函数指针或std::function尺寸费用发生。你能解释一下为什么吗?假设我们有以下代码:autodeleter_=[](int*p){doSth(p);deletep;};std::unique_ptrup(newint,deleter_);据我了解,unique_ptr应该有一个decltype(deleter_)类型的对象,并将deleter_分配给该内部对象。但显然这不是正在发生的事情。你能用尽可能小的代码示例解释这背后的机制吗?

C++ std::unique_ptr:为什么 lambda 没有任何尺寸费用?

我正在阅读“有效的现代C++”。在std::unique_ptr相关的条目中声明如果自定义删除器是无状态对象,则不会产生大小费用,但如果它是函数指针或std::function尺寸费用发生。你能解释一下为什么吗?假设我们有以下代码:autodeleter_=[](int*p){doSth(p);deletep;};std::unique_ptrup(newint,deleter_);据我了解,unique_ptr应该有一个decltype(deleter_)类型的对象,并将deleter_分配给该内部对象。但显然这不是正在发生的事情。你能用尽可能小的代码示例解释这背后的机制吗?

c++ - 如何从 boost::shared_ptr 释放指针?

boost::shared_ptr可以释放存储的指针而不删除它吗?我可以看到文档中不存在释放功能,在FAQ中也解释了为什么它不提供释放功能,例如不能对不​​唯一的指针进行释放。我的指针是独一无二的。我怎样才能释放我的指针?或者使用哪个boost智能指针类可以让我释放指针?我希望你不要说使用auto_ptr:) 最佳答案 不要。Boost的常见问题解答条目:Q.Whydoesn'tshared_ptrprovidearelease()function?A.shared_ptrcannotgiveawayownershipunlessi

c++ - 如何从 boost::shared_ptr 释放指针?

boost::shared_ptr可以释放存储的指针而不删除它吗?我可以看到文档中不存在释放功能,在FAQ中也解释了为什么它不提供释放功能,例如不能对不​​唯一的指针进行释放。我的指针是独一无二的。我怎样才能释放我的指针?或者使用哪个boost智能指针类可以让我释放指针?我希望你不要说使用auto_ptr:) 最佳答案 不要。Boost的常见问题解答条目:Q.Whydoesn'tshared_ptrprovidearelease()function?A.shared_ptrcannotgiveawayownershipunlessi

c++ - 为什么 C++ 要求仅针对 float、double 或 long double 实例化该复数?

根据C++ISO规范,§26.2/2:Theeffectofinstantiatingthetemplatecomplexforanytypeotherthanfloat,doubleorlongdoubleisunspecified.为什么标准作者会明确添加此限制?这使其未指定,例如,如果您制作complex会发生什么?或complex而且似乎是人为的限制。这种限制有什么原因吗?如果要实例化complex是否有解决方法?使用您自己的自定义类型?我问这个问题主要是因为thisearlierquestion,其中OP对为什么abs感到困惑为complex提供了奇怪的输出.也就是说,这仍然

c++ - 为什么 C++ 要求仅针对 float、double 或 long double 实例化该复数?

根据C++ISO规范,§26.2/2:Theeffectofinstantiatingthetemplatecomplexforanytypeotherthanfloat,doubleorlongdoubleisunspecified.为什么标准作者会明确添加此限制?这使其未指定,例如,如果您制作complex会发生什么?或complex而且似乎是人为的限制。这种限制有什么原因吗?如果要实例化complex是否有解决方法?使用您自己的自定义类型?我问这个问题主要是因为thisearlierquestion,其中OP对为什么abs感到困惑为complex提供了奇怪的输出.也就是说,这仍然

c++ - shared_ptr 的别名构造函数是干什么用的?

在此页面(http://www.cplusplus.com/reference/memory/shared_ptr/)的第5段中,它说:Additionally,shared_ptrobjectscanshareownershipoverapointerwhileatthesametimepointingtoanotherobject.Thisabilityisknownasaliasing(seeconstructors),andiscommonlyusedtopointtomemberobjectswhileowningtheobjecttheybelongto.Becauseof

c++ - shared_ptr 的别名构造函数是干什么用的?

在此页面(http://www.cplusplus.com/reference/memory/shared_ptr/)的第5段中,它说:Additionally,shared_ptrobjectscanshareownershipoverapointerwhileatthesametimepointingtoanotherobject.Thisabilityisknownasaliasing(seeconstructors),andiscommonlyusedtopointtomemberobjectswhileowningtheobjecttheybelongto.Becauseof