我对算术插入器有一个基本的问题; §27.7.3.6.2/ 1 [ostream.inserters.arithmetic]:
当val的类型为bool,long,unsigned long,long long,unsigned long long,double,long double或const void *时,格式转换就像执行以下代码片段一样:
bool failed = use_facet< num_put<charT,ostreambuf_iterator<charT,traits> > > (getloc()).put(*this, *this, fill(), val).failed()
问题是,确切的函数执行从指针到类型的转换,正如Matt McNabb纠正的那样,const void*
?例如:
int *ip = new int(1);
std::cout << ip; //0xaa33fa67
我不关心实现细节,我只想知道什么函数从指针产生算术结果。上面的示例中是put
吗?
答案 0 :(得分:1)
从指向成员/成员函数的任何非指针到void*
的隐式转换。传递给流后,它会将其传递给std::num_put::put()
,并将其作为通用指针打印出来,就像使用"%p"
格式标志一样。