格式化输出算术插入器

时间:2014-10-06 05:20:29

标签: c++ ostream

我对算术插入器有一个基本的问题; §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吗?

1 个答案:

答案 0 :(得分:1)

从指向成员/成员函数的任何非指针到void*的隐式转换。传递给流后,它会将其传递给std::num_put::put(),并将其作为通用指针打印出来,就像使用"%p"格式标志一样。