मैं संभवतः सी ++ 11/टीआर 1 पुस्तकालयों का उपयोग करने के लिए बूस्ट :: एएसओ उदाहरणों में से एक को अनुकूलित करने की कोशिश कर रहा हूं। मूल कोड इस तरह दिखता है:क्या std :: bind boost :: asio के साथ संगत होना चाहिए?
void start_accept()
{
tcp_connection::pointer new_connection =
tcp_connection::create(acceptor_.get_io_service());
acceptor_.async_accept(new_connection->socket(),
boost::bind(&tcp_server::handle_accept, this, new_connection,
boost::asio::placeholders::error));
}
अगर मैं std::bind
साथ boost::bind
की जगह इस प्रकार है:
/usr/include/c++/4.4/tr1_impl/functional:1137: error: return-statement with a value, in function returning 'void'
मैं हूं:
void start_accept()
{
tcp_connection::pointer new_connection =
tcp_connection::create(acceptor_.get_io_service());
acceptor_.async_accept(new_connection->socket(),
std::bind(&tcp_server::handle_accept, this, new_connection,
boost::asio::placeholders::error));
// std::bind(&tcp_server::handle_accept, this, new_connection, _1));
}
मैं के साथ समाप्त होता है के साथ एक बड़ी त्रुटि संदेश मिलता है, बूस्ट संस्करण 1.47
के साथ जीसीसी संस्करण 4.4 का उपयोग करके मुझे बूस्ट :: बाइंड और std :: विनिमय करने योग्य होने के लिए बाध्य।
std बूस्ट और tr1 से बहुत कुछ लेता है, लेकिन वे समान नहीं हैं। मुझे आश्चर्य है कि क्या इस [इस सवाल] के साथ कुछ करने के लिए है (http://stackoverflow.com/questions/6653531/workaround-to-allow-tr1function-to-swallow-return-values) – spraff
एक [संभावित रूप से संबंधित] (https : //svn.boost.org/trac/boost/ticket/3053) टिकट –
@ सैम मिलर मुझे टिकट मिला लेकिन इसे 3 साल तक अपडेट नहीं किया गया है! मैंने बूस्ट के v1.48 के खिलाफ यह भी प्रयास किया है, और boost :: asio :: प्लेसहोल्डर के बजाय std :: प्लेसहोल्डर्स का उपयोग करके। अभी के लिए मैं बूस्ट :: shared_ptr और boost :: asio कोड के लिए bind के साथ चिपक रहा हूँ। – mark