У меня есть основной вопрос об арифметических вставках; § 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()
Вопрос в том, какая именно функция выполняет преобразование указателя в тип, как поправил Мэтт Макнабб, const void*
? Например:
int *ip = new int(1);
std::cout << ip; //0xaa33fa67
Меня не интересуют детали реализации, я просто хотел бы знать, какая функция выдает арифметический результат из указателя. Это put
в приведенном выше примере?
const void *
, а не вlong
- person M.M   schedule 06.10.2014const void *
происходит, когда указатель передается вoperator<<(const void *)
. - person T.C.   schedule 06.10.2014