Это невозможно. std::ifstream
создает, владеет и уничтожает свой буфер. Единственная причина, по которой он «экспортируется» через rdbuf
, заключается в разрешении перенаправления std::cin
и т. Д. В реализации GNU буфер является простым элементом (а не указателем).
std::ifstream
не экспортирует элемент rdbuf()
с аргументом. Один из его родительских классов делает, но это должно быть затенено переопределением rdbuf
в std::basic_ifstream
с подписью
std::filebuf *rdbuf() const;
std::filebuf
также не подлежит копированию.
(члена rdbuf(std::streambuf *)
можно получить, применив std::ios
. Использование этого вызовет знакомых носовых демонов.)