Why doesn't C++11 curly brace initialzation in constructor initialization list work when parens initializaton does?
问题 How is {} initialization in a constructor initialization list different from () initialization when initializing reference to abstract types? Take class Bar below: class AbstractBase { public: AbstractBase() {} virtual ~AbstractBase() = default; virtual void ab() = 0; }; class Foo : public AbstractBase { public: Foo() {} void ab() {} }; class Bar { public: Bar(const AbstractBase& base) : myBase{base} {} private: const AbstractBase& myBase; }; int main() { Foo f{}; Bar b{f}; } When compiling,