add an extra pair of parentheses:
B b((A()));
B b{A()};
the problem you encountered caused the most unpleasant parsing, which means that the compiler cannot decide whether you want a function declaration or a variable definition.
[edit]
I should also add that the standard requires the compiler to select a function declaration in this case.
[edit]
clang :
http://rextester.com/PECQ53431
source_file.cpp:16:8: warning: parentheses were disambiguated as a function declaration [-Wvexing-parse]
B b(A());
^~~~~
source_file.cpp:16:9: note: add a pair of parentheses to declare a variable
B b(A());
^
( )
1 .