C++ 将安全插座作为正常插座传递到boost中

C++ 将安全插座作为正常插座传递到boost中,c++,boost-asio,shared-ptr,C++,Boost Asio,Shared Ptr,我有这些类型。问题是我需要传递一个安全的套接字,因为TSocket会直接从TSocureSocket转换到TSocket工作吗?还是有其他解决办法?根据端口的不同,我将确保插座的安全,而在其他端口中则不会。我只需要返回类型为TSocket typedef boost::asio::ip::tcp::socket TBoostSocket; typedef boost::asio::ssl::stream<TBoostSocket> TSLLSocket

我有这些类型。问题是我需要传递一个安全的套接字,因为TSocket会直接从TSocureSocket转换到TSocket工作吗?还是有其他解决办法?根据端口的不同,我将确保插座的安全,而在其他端口中则不会。我只需要返回类型为TSocket

  typedef boost::asio::ip::tcp::socket            TBoostSocket;
  typedef boost::asio::ssl::stream<TBoostSocket>  TSLLSocket;
  typedef boost::shared_ptr<TBoostSocket>         TSocket;
  typedef boost::shared_ptr<TSLLSocket>           TSecureSocket;
typedef boost::asio::ip::tcp::socket TBoostSocket;
typedef boost::asio::ssl::stream TSLLSocket;
typedef boost::shared_ptr TSocket;
typedef boost::共享的\u ptr TSecureSocket;
我已经看过了

我有这些打字机

其中,
next_layer_type
由以下类型定义:

typedef boost::remove_reference< Stream >::type next_layer_type;
typedef boost::remove_reference::键入next_layer_type;

由于使用
TBoostSocket
定义模板,因此调用
next\u layer()
lower\u layer()

当然,这将返回一个引用而不是指针,并且该引用指向的是一个不属于您的实例。因此,您现在需要以某种方式将其包装在共享的ptr中,这可能并不容易,因为您不能允许将其删除

我有这些打字机

其中,
next_layer_type
由以下类型定义:

typedef boost::remove_reference< Stream >::type next_layer_type;
typedef boost::remove_reference::键入next_layer_type;

由于使用
TBoostSocket
定义模板,因此调用
next\u layer()
lower\u layer()

当然,这将返回一个引用而不是指针,并且该引用指向的是一个不属于您的实例。因此,您现在需要以某种方式将其包装在共享的ptr中,这可能并不容易,因为您不能允许将其删除

typedef boost::remove_reference< Stream >::type next_layer_type;