1. If all members in a class are public, the class is not required to provide a constructor.
  2. The values are resolved positionally based on the declaration order of the data members.
    #include <iostream>
       
    class Foo {
    public:
       int ival;
       const char* ptr;
    };
       
    int main() {
        Foo foo = {1, "abc"};
        // Foo foo = {"abc", 1}; // Error
        std::cout << foo.ival << std::endl;
        std::cout << foo.ptr  << std::endl;
        return 0;
    }
    
  3. Two primary drawbacks to the explicit initialization list are that: