isocketstream openSocket();
std::ifstream openFile();

std::istream readData(std::string datasource)
{
 if (datasource == "net")
{
  return openSocket();
}
 else {
  return openFile();
 }
}

みたいなことをやりたいのですが、何か上手い手はないでしょうか?
std::unique_ptr<std::istream>としても良いのですが、見栄えがあまりよろしくなくて、、、