voidfile_socket::take_over(std::shared_ptr<file_socket>socket_ptr){if(socket_ptr)printf("restore user data from invalid object ("ASCS_LLF").\n",socket_ptr->id());}
//socket_ptr actually is a pointer of file_socket, use std::dynamic_pointer_cast to convert it.
{printf("restore user data from invalid object ("ASCS_LLF").\n",socket_ptr->id());}
//this works too, but brings warnings with -Woverloaded-virtual option.
//void file_socket::take_over(std::shared_ptr<file_socket> socket_ptr) {printf("restore user data from invalid object (" ASCS_LLF ").\n", socket_ptr->id());}