条件演算式の型

C++では、第2項と第3項の型が同じで共に左辺値であるなら条件演算式は、左辺値であることは、比較的よく知られていると思うが、
第2項と第3項が共に配列型 又は 関数型である場合、ポインタ型への変換は行われないのね。
完全に規格を見落としていた。
早速、 実験

#include <stdio.h>
int foo(void);
int bar(void);
int main()
{
  int a[10],b[10];
  printf("%u\n", sizeof(1?a:b));	// C++ではsizeof(int[10])、Cではsizeof(int*)のはず
  printf("%u\n", sizeof(1?foo:bar));	// C++ではコンパイルエラー、Cではsizeof(int(*)(void))のはず
  return 0;
}

GCCでは予想どおりだったが、VCではC言語でも関数からポインタへの変換が行われていないっぽい。
BCCC++とCの結果が同じだった(だめじゃん)。