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

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

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

explicit SkipList(Comparator cmp, Arena* arena);

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

Спасибо.

4b9b3361

Ответ 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
}