为什么允许空的wchar_t文字?

Mar*_* Ba 12 c++ character literals

看下面的代码:

int main(int argc, char* argv[])
{
    // This works: (Disable Lang Ext = *Yes* (/Za))
    wchar_t wc0 = L'\0';
    wchar_t wc_ = L'';
    assert(wc0 == wc_);

    // This doesn't compile (VC++ 2010):
    char c0 = '\0';
    char c_ = ''; // error C2137: empty character constant
    assert(c0 == c_);
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

为什么编译器允许为宽字符定义字符文字?这对宽度没有意义,就像char编译器标记错误的位置没有意义一样.

标准是否允许这样做?