Нет функции to_string, которая работает с boost :: asio :: ip :: tcp, как с boost :: asio :: ip
Это сбивает с толку. boost::asio::ip::tcp
- это класс, который вы никогда не создаете (это статический c класс, моделирующий протокол), boost::asio::ip
- это пространство имен, вы не можете рассчитывать напечатать пространство имен.
Тогда есть в вашем образце много нерелевантного кода. Предположим, что ваш chat_server пытался распечатать конечные точки:
Live On Coliru
struct chat_server {
chat_server(boost::asio::io_context&, tcp::endpoint ep) {
std::cout << "Serving on " << ep << "\n";
}
};
Печатает что-то вроде
Serving on 0.0.0.0:100
Serving on 0.0.0.0:110
Serving on 0.0.0.0:120
...
Если вы действительно хотите использовать литерал заголовка вопроса, вы должны распечатать адресную часть конечной точки:
std::cout << "Serving on " << ep.address() << "\n";
Что печатает немного бесполезное
Serving on 0.0.0.0
Serving on 0.0.0.0
Serving on 0.0.0.0
...
Это потому, что вы не привязались к интерфейсу. Немного полезнее, если вы:
Live On Coliru
tcp::endpoint endpoint(ip::address_v4::loopback(), std::atoi(argv[i]));
Serving on 127.0.0.1
Serving on 127.0.0.1
Serving on 127.0.0.1
TL; DR
Все нужный вам код:
#include <boost/asio.hpp>
#include <iostream>
int main() {
std::cout << boost::asio::ip::address_v4::loopback() << "\n";
}