関数を暗黙の型変換がよくわからない

PPPUC++の復習というか練習でマニピュレータを書く練習をしていて

inline istream& autobase(istream& is) { is.setf(ios::fmtflags(0), ios::basefield); return is;}
main()
{
    int a,b,c;
    cin >> autobase >> a  >> b;
    cout << autobase << ">>" << a << " " << b << endl;
}

のようにistreamに限定しておいたら ostreamでは撥ねられるかな?と期待していたんだけど、通ってしまった上に妙な表示に・・・

0x10 20
1>>16 20

なんぞこの '1' って?
ひょっとして、と思って boolalpha してみると

1 2
true>>1 2

なんと。関数から暗黙の型変換でboolになるのか

#include <iostream>
using namespace std;

int sq(int x) { return x * x; }
main()
{
    cout << boolalpha;
    bool foo = sq;

    cout << foo
         << sq << endl;;
}

truetrue

ほんとだ。何に使うんだこれ&どういう仕様なんだろうこれ?
どなたか教えてくださいー