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