Dlaczego in_avail () wypisuje zero, nawet jeśli strumień ma jakiś znak?

#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

Myślę, że będzie to wynik 0 i 2

ale kiedy uruchomię kod, wyjdzie on 0 i 0, dlaczego?

lub jeśli zmienię cin.putback (1); do int a; cin >> a; z wejściem 12 12;

nadal wyprowadza 0 i 0

questionAnswers(2)

yourAnswerToTheQuestion