Okay, so basically not without explicitly defining constructors. The reason I started using initializer lists was to avoid writing default constructors with simple data assignment (thread: http://www.cplusplus.com/forum/general/109091/ )
The reason I started using initializer lists was to avoid writing default constructors with simple data assignment
Can't really do that where inheritance is involved. You can, of course, specify that the default constructor is defaulted by the compiler, but that's more work than just writing an empty constructor.
1 An aggregate is an array or a class (Clause 9) with no user-provided constructors (12.1), no private or protected non-static data members (Clause 11), no base classes (Clause 10), and no virtual functions (10.3).
As your class MyDerived has a base class it is not an aggregate and can not be initialized such way as you try to use.i
How about when you are creating a temporary variable (maybe it's an R-value, I'm not so sure of the correct term but here is the example):
1 2 3 4
//some function being called somewhere
foo( MyClass( 3, 4 ) ); //normally I would do this with a constructor
foo( MyClass{ 3, 4 } ); //this seems to be invalid