Вот минимальный пример того, что я M Попытка достичь: < /p>
Код: Выделить всё
struct base
{
auto foo(this auto&& self)
{
/* default implementation of foo */
}
};
struct derivedA : public base
{
auto foo(this auto&& self)
{
/* custom implementation of foo */
}
};
struct derivedB : public base
{
};
int main()
{
derivedA a;
a.foo(); // calls derivedA::foo
derivedB b;
b.foo(); // calls base::foo
}
Это кажется почти таким же просто Принято. < /p>
Мои вопросы: < /p>
- Работает ли этот подход? < /li>
Каковы плюсы и минусы этого подхода?
Когда полученный класс скрывает функцию элемента базового класса, все перегрузки этой функции -члена становятся недоступными, включая константные перегрузки или что -то в этом роде. Но могу ли я использовать, если contexpr и вывести это, чтобы объединить все перегрузки в одну функцию? - Задержка отстой. Работа с существующими типами или встроенными типами, поскольку они должны явно наследовать от базы.
Подробнее здесь: https://stackoverflow.com/questions/794 ... proach-val