У меня много производных классов от базы. Эти классы должны наследовать конструктор от базы, но этот конструктор должен работать только с экземплярами производного или базового класса.
Пример базового класса:
template<typename T, typename U>
struct bar
{
bar() = default;
template<typename _Bar_or_Derived>
bar(const _Bar_or_Derived &); // must accept any bar or its derived classes
};
Пример производных классов:
template<typename T, typename U>
struct foo : public bar<T, U>
{
using bar<T, U>::bar;
// must inherit something like foo(const Foo_or_Bar&)
};
template<typename T, typename U>
struct not_foo : public bar<T, U>
{
using bar<T, U>::bar;
// must inherit something like not_foo(const NotFoo_or_Bar&)
};
Как это сделать?