Подтвердить что ты не робот

Явное ключевое слово в конструкторе multi-arg?

Недавно я встретил какой-то странный класс, в котором было три конструктора:

class Class
{
    public:
        explicit Class(int );

        Class(AnotherClass );

        explicit Class(YetAnotherClass, AnotherClass );

    // ...
}

Это не имеет для меня никакого смысла - я думал, что явное ключевое слово - защищать выбранную конструкцию компилятора из чужого типа.

Разрешено ли это? Если это так, что это значит?

4b9b3361

Ответ 1

В С++ 11 многопараметрические конструкторы могут быть неявно преобразованы в с инициализацией скобки.

Однако, прежде чем С++ 11 explicit применяется только к конструкторам с одним аргументом. Для конструкторов с несколькими аргументами он игнорировался и не имел эффекта.