解释奇怪的c++编译和语法

Explain weird c++ compilation and syntax

有人可以解释为什么这段代码是有效语法吗?为什么会编译?

void foo(){}
enum class X { X1, X2 };

int main()
{
    auto s = X::X1;
    foo(),s = X::X2;
    return 0;
}

使用 Apple LLVM 版本 9.0.0 (clang-900.0.38).

编辑:

一些程序员老兄提到的有问题的行 foo(),s = X::X2;

假设你的意思是

foo(),s = X::X2;

实际上等于

(foo()),(s = X::X2);

即调用foo函数的表达式foo(),表达式s = X::X2除以comma operator.