Most vexing parse

What does the following declaration mean?

struct Foo {};
struct Bar {
    Bar(Foo) {}
};

int main() {
    Bar b(Foo());
}
A

Declares a Bar object using aggregate initialization

B

Declares a Bar object b constructed with a default Foo

C

Declares a function b that takes a pointer to a function returning Foo and returns Bar

D

Compile error: ambiguous syntax