Is there any way to increase visibility with a using declaration?

This is a subtle one. In C++, employing the using keyword on a base class constructor is called inheriting constructors and works differently than what a using keyword typically does. Specifically, note that

If overload resolution selects an inherited constructor, it is accessible if it would be accessible when used to construct an object of the corresponding base class: the accessibility of the using-declaration that introduced it is ignored.

(Emphasis mine. Source)

In other words, the fact that you've included the using declaration in a public section doesn't actually make those constructors public.

I believe that, in this case, you may have to define your own constructors to match the base type constructors.

Tags:

C++