¿Por qué in_avail () da salida a cero incluso si la secuencia tiene algún carácter?

#include <iostream>
int main( )
{
   using namespace std;
   cout << cin.rdbuf()->in_avail() << endl;
   cin.putback(1);
   cin.putback(1);
   cout << cin.rdbuf()->in_avail() << endl;
   return 0;
} //compile by g++-4.8.1

Creo que esto producirá 0 y 2

pero cuando ejecuto el código, sale 0 y 0, ¿por qué?

o si cambio cin.putback (1); a int a cin >> a; con entrada 12 12;

todavia sale 0 y 0

Respuestas a la pregunta(2)

Su respuesta a la pregunta