c++ explicit

c++ - ¿Por qué el constructor de doble parámetro comienza con una palabra clave explícita?



explicit (1)

Con C ++ 11, puede utilizar las listas de inicio con paréntesis en lugar de otras expresiones, y eso hace una diferencia. Por ejemplo, puede usarlos en declaraciones de retorno:

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

Mi amigo y yo hemos estado leyendo recientemente el código fuente de leveldb. Y nos encontramos con este problema. En el archivo leveldb db/skiplist.h , hay una declaración del constructor:

explicit SkipList(Comparator cmp, Arena* arena);

Sé que un constructor explícito con un solo parámetro significa que no hay conversión de tipo implícita para el parámetro constructor. Pero, ¿qué significa constructor de parámetros dobles con palabra clave explícita? ¿Es nueva regla de C ++ 11?

Gracias.