Почему двойной конструктор параметров начинается с явного ключевого слова?
Мой друг и я недавно читаем исходный код leveldb. И мы сталкиваемся с этой проблемой. В файле leveldb db/skiplist.h есть объявление конструктора:
explicit SkipList(Comparator cmp, Arena* arena);
Я знаю, что явный конструктор с единственным параметром означает не подразумеваемое преобразование типа для параметра конструктора. Но что такое конструктор двойных параметров с явным ключевым словом?
Это новое правило С++ 11?
Спасибо.
Ответы
Ответ 1
С С++ 11 вместо некоторых других выражений вы можете использовать braced-init-lists, и это имеет значение. Например, вы можете использовать их в операторах return:
SkipList foo() {
return {{}, nullptr}; //does not compile with explicit constructor
return SkipList{{}, nullptr}; //compiles with or without explicit constructor
}