компилятор Intel C++ (версия 16.0.3.207 сборки 20160415), кажется, уронить явно спецификатора, когда конструктор базового класса наследуются с использованием . Это ошибка?Наследование явного конструктора (Intel C++)
struct B
{
explicit B(int) { }
};
struct D : B
{
using B::B;
};
B b = 1; // Not OK, fine
D d = 1; // Not OK with Microsoft C++ and GCC, but OK with Intel C++
Это, безусловно, должно быть ошибкой. Унаследованные конструкторы просто отображаются с помощью директивы «using», поэтому он должен быть правильным тем же вызовом, что и в базовом классе. – Argenet
Единственное, что я нашел, помимо определения того, что является явным конструктором: «Если декларация using объявляет конструктор (3.4.3.1), она неявно объявляет набор конструкторов в классе, в котором появляется декларация использования (12.9) «Все. Я не вижу ничего явного (каламбур не предназначен), который предполагает, что одно или другое поведение является правильным. –