В соответствии с здесь, explicit
:
Задает конструкторы и операторы преобразования (начиная с С++ 11), которые не допускать неявных преобразований или инициализации копий.
Таким образом, идентичны ли эти два метода?
struct Z {
// ...
Z(long long); // can initialize with a long long
Z(long) = delete; // but not anything smaller
};
struct Z {
// ...
explicit Z(long long); // can initialize ONLY with a long long
};