Вопросы к Поиску с Алисой
Ключевое слово explicit стало обязательным в C++11 для решения проблемы непредвиденных неявных преобразований. ru.wikipedia.org learn.microsoft.com
По умолчанию при создании пользовательского преобразования компилятор может использовать его для выполнения неявных преобразований. learn.microsoft.com Иногда это совпадает с намерениями программиста, но в других случаях правила, определяющие неявные преобразования, могут привести к тому, что компилятор примет нежелательный код. learn.microsoft.com
Например, в C++ тип bool объявлен как арифметический, поэтому возможно неявное преобразование в любой целочисленный тип или даже в тип числа с плавающей точкой, что может привести к непредвиденным математическим операциям. ru.wikipedia.org
Ключевое слово explicit сообщает компилятору, что указанное преобразование нельзя использовать для выполнения неявных преобразований. learn.microsoft.com