问题 #include <iostream> struct A{ A(int){ } }; struct B{ B() = default; B(A){ } B(B const&){} B(B&&){} }; int main(){ B b({0}); } For the given codes, the candidate functions are: #1 B::B(A) #2 B::B(const B&) #3 B::B(B&&) According to the standard, for #1, the object of type A is copy-list-initialized by {0} as A a = {0} , A::A(int) is considered for the initialization, so only the standard conversion within #1. For #2, it's an initialization of a reference form braced-init-list which is the