C++ 格式化输出算术插入器

C++ 格式化输出算术插入器,c++,ostream,C++,Ostream,我有一个关于算术插入器的基本问题;§27.7.3.6.2/1[ostream.插入器.算术]: 当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> &g

我有一个关于算术插入器的基本问题;§27.7.3.6.2/1[ostream.插入器.算术]:

当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()

我不关心实现的细节,我只想知道什么函数从指针生成算术结果。在上面的例子中是不是
put

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

指针被转换为
const void*
,not
long
当指针被传递到
operator或您已按下按钮时,将发生到
const void*
的转换。谢谢
int *ip = new int(1);
std::cout << ip; //0xaa33fa67