LINUX.ORG.RU

История изменений

Исправление alysnix, (текущая версия) :

Вот здесь: Герб Саттер – отчёт о встрече по стандартам ISO C++ в июне 2025 года (комментарий)

и пояснение текстом, и два работающих примера на godbolt, в которых видно изменение значения this.

Вам сто пицот раз говорили - проверить свои выводы не на бессмысленных рассуждалках с привлечением темлейтов и вирт функций, а ВОТ НА ЭТОМ КОДЕ.

struct A {
  int _a;
};

struct B {
  int _b;
  void fun() {} /// ЖЫРНО ТАК - ВОТ ЭТУ ФУНКЦИЮ НАДО ВЫЗВАТЬ и смотреть сдвиг this!!!
};

///множ наследование
struct C0: public A, public B {
  void test() { fun(); }
};

///просто встраивание
struct C1: public A {
  B _b;
  void test() { _b. fun(); }
};

Тут код упрощен до предела и функция, которую вызывать - только одна, чтобы вы опять не пошли по граблям.

А у вас - то вы вызываете разные функции с одним именем!!!, то пишете какие-то темплейты вызовов не пойми чего, то виртуальные функции(это опять физически разные функции!!!).

Зачем вам шаблоны, вы сначала разберитесь в тривиальном коде.

Исходная версия alysnix, :

Вот здесь: Герб Саттер – отчёт о встрече по стандартам ISO C++ в июне 2025 года (комментарий)

и пояснение текстом, и два работающих примера на godbolt, в которых видно изменение значения this.

Вам сто пицот раз говорили - проверить свои выводы не на бессмысленных рассуждалках с привлечением темлейтов и вирт функций, а ВОТ НА ЭТОМ КОДЕ.

struct A {
  int _a;
};

struct B {
  int _b;
  void fun() {} /// ЖЫРНО ТАК - ВОТ ЭТУ ФУНКЦИЮ НАДО ВЫЗВАТЬ и смотреть сдвиг this!!!
};

///множ наследование
struct C0: public A, public B {
  void test() { fun(); }
};

///просто встраивание
struct C1: public A {
  B _b;
  void bb() { _b. fun(); }
};

Тут код упрощен до предела и функция, которую вызывать - только одна, чтобы вы опять не пошли по граблям.

А у вас - то вы вызываете разные функции с одним именем!!!, то пишете какие-то темплейты вызовов не пойми чего, то виртуальные функции(это опять физически разные функции!!!).

Зачем вам шаблоны, вы сначала разберитесь в тривиальном коде.