あなたの場合MINTINT
はtypedef int MYINT
関数MYINT()
ではありませんint()
が、デフォルトの初期化であり、int y = 0
またはと同等ですint y = int(0)
。
あなたの2行目、つまり、同じ理由cout << MYINT()
で正しくコンパイルされます。g++ -Wall -ansi -pedantic
ただし、「intのデフォルトコンストラクターへの呼び出し」(編集:これは正しくありません)「許可されていないMYINTを返す関数型」(編集:これは正しい答えです)として解釈されるため、次のエラーでg++
文句を言います、Mike を参照)。しかし、これは.sizeof
error: invalid application of "sizeof" to a function type
MYINT()
typedef
概要:
#include <iostream>
typedef int myint;
int main()
{
int y = myint();
int z = myint(0);
std::cout << y << z; // Will output 0 0
std::cout << std::endl << myint(0) << myint(); // Will output 0 0
std::cout << sizeof(int()); // The error is here; same with sizeof(myint())
}
編集(再度)
コメントで述べたように、cout
行は機能しません。これは、おそらくinclude <iostream>
.
編集
とのあいまいさの説明については、Mike Seymour の回答もご覧くださいsizeof
。