Почему двухпараметрический конструктор начинается с явного ключевого слова?

Мой друг и я недавно читали исходный код leveldb. И мы сталкиваемся с этой проблемой. В левелдб дБ / skiplist.h файл, есть объявление конструктора:

explicit SkipList(Comparator cmp, Arena* arena);

Я знаю, что явный конструктор с одним параметром означает отсутствие неявного преобразования типов для параметра конструктора. Но что означает конструктор двойных параметров с явным ключевым словом?
Это новое правило C ++ 11?

Благодарю.

16

Решение

С C ++ 11 вы можете использовать рамно-Init-листы вместо некоторых других выражений, и это имеет значение. Например, вы можете использовать их в операторах возврата:

SkipList foo() {
return {{}, nullptr}; //does not compile with explicit constructor
return SkipList{{}, nullptr}; //compiles with or without explicit constructor
}
16

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector