lectura explanation of members:
explicit char_separator(const Char* dropped_delims,
const Char* kept_delims = "",
empty_token_policy empty_tokens = drop_empty_tokens)
explicit char_separator()
La palabra clave explicit
para la primera constructora requiere la creación explícita de objetos de tipo char_separator. What does the explicit keyword mean in C++? cubre muy bien la palabra clave explícita.
La palabra clave explicit
para el segundo constructor es un ruido y se ignora.
EDITAR
Desde el C++ estándar:
7.1.2 P6 dice:
El especificador explícito deberá utilizarse únicamente en las declaraciones de constructores dentro de una declaración de la clase; ver 12.3.1.
12.3.1 p2 dice:
Un constructor explícito construye objetos al igual que no explícitas constructores, pero lo hace sólo cuando la sintaxis de inicialización directa (8,5) o en los moldes (5.2. 9, 5.4) se usan explícitamente. Un constructor predeterminado puede ser un constructor explícito; dicho constructor será utilizado para realizar inicialización por defecto o inicialización de valor (8.5). [Ejemplo:
class Z {
public:
explicit Z();
explicit Z(int);
// ...
};
Z a; // OK: default-initialization performed
Z a1 = 1; // error: no implicit conversion
Z a3 = Z(1); // OK: direct initialization syntax used
Z a2(1); // OK: direct initialization syntax used
Z* p = new Z(1); // OK: direct initialization syntax used
Z a4 = (Z)1; // OK: explicit cast used
Z a5 = static_cast<Z>(1); // OK: explicit cast used
-end ejemplo]
Por lo tanto, el constructor por defecto con la palabra clave explicit
es el mismo que sin esta palabra clave.
No es una tontería; esta pregunta se trata de un caso de esquina muy específico de la palabra clave 'explicit'. –
Eso no es una función, eso es un constructor - ver http://stackoverflow.com/questions/121162/what-does-the-explicit-keyword-in-c-mean/121163#121163 – Skizz
@larsmans Difícil de decir sin ver algún ejemplo real –