By adding the constructor, vec() would not be not needed. But inserting Container = std::string makes the constructor ambiguous, so it breaks the current code.