我正在检查 basic_istream 类的实现。我在https://gcc.gnu.org/onlinedocs/gcc-13.2.0/libstdc++/api/a00113_source.html#l00095找到了实现。 让我添加一个片段。
在创建 basic_istream 类的对象时,我必须传递两个模板参数,因为在 basic_istream 类声明中未声明默认参数。
我仍然可以仅使用一个模板参数构建一个对象,如下例所示。
#include <iostream>
#include <sstream>
using namespace std;
int main()
{
basic_stringbuf<char>string("Basic ios",ios_base::in| ios_base::out);
basic_istream<char> bis(&string);
return 0;
}
有人可以澄清它对我来说如何运作吗?
在创建 basic_istream 类的对象时,我必须传递两个模板参数,因为在 basic_istream 类声明中未声明默认参数。
std::baisc_stream
有一个构造函数,可以从传递的构造函数参数中推导出模板参数。构造函数是:
explicit basic_istream( std::basic_streambuf<CharT, Traits>* sb ); (1)
此构造函数将在您的示例中使用,以推导出两个模板参数。请参阅类模板参数推导