Фактически, унаследованный конструктор может быть опубликован c, но не только так, как вы его написали. Вы можете определить свой класс B
следующим образом:
class B : public A {
public:
B() {}
B(int x) : A(x) {} // instead of using A::A(int)
using A::f;
};
(см. Его на GodBolt )
Возможно, стандартный комитет решил, что выражение using A::A
будет немного двусмысленно, поскольку конструктор базового класса - это не совсем то же самое, что конструктор подкласса.