C/C++ でのグローバル変数の関数による初期化

以下のグローバル変数を関数で初期化するコードは C++コンパイルできて動作するんですね・・・

#include <stdio.h>

int initializer()
{
    return 12345;
}

int g_int = initializer();

int main(int argc, char** argv)
{
    printf("g_int = %d\n", g_int);

    return 0;
}

C では、

main.c:8: error: initializer element is not constant