鍋あり谷あり

テーマを決めずに適当に書いています。

修行が足りない

先日。C++の設計と進化 を読んでいたら、私の知らない文法が目にとまった。

int a; // a を int 型として宣言(定義?)する。これは普通。
int( b ); // b を int 型として宣言(定義?)する。こんなところに括弧を書いてもいいなんて知らなかった。

まだまだ C++ の修行が足りない。いや、これは K&R C のころからの文法だと思うけど。

まあ実用上は知らなくて困ることはないと思うんだが、かなりくやしい。

ちなみに。

typedef int A;
int foo( int(a) );
int bar( int(A) );
void main()
{
	cout << "foo : " << typeid(foo).name() << endl;
	cout << "bar : " << typeid(bar).name() << endl;
}

と書くと、

foo : int __cdecl(int)
bar : int __cdecl(int (__cdecl*)(int))

となる。それでいいの?
コンパイラマイクロソフトの cl 13.10.3077。