関数を暗黙の型変換がよくわからない
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
ほんとだ。何に使うんだこれ&どういう仕様なんだろうこれ?
どなたか教えてくださいー