¿Por qué `std :: basic_ios` tiene un constructor público?

std::basic_iostiene un constructor público : explicit basic_ios (std::basic_streambuf<CharT,Traits>* sb); En mi opinión, la única razón para que una clase tenga un constructor público es usar una instancia independiente de esa clase en un programa. Si una clase existe solo para que otras...