Код: Выделить всё
template
void f(T t) {
t.T::~T(); // #1 should this compile?
t.T::m(); // #2 should this compile?
}
struct T { ~T() {} void m(){}}; // note named like the typename parameter
struct U : private T { ~U() {} void m(){}}; // note inherits from T
int main()
{
f(U{});
}
Но я попробовал его на компиляторах, используя Godbolt https://godbolt.org/z/3kg8m5xv и поведен. Мысль. :: u :: m () Нет ошибок компилятора, которые соответствуют моим ожиданиям.
MSVC повышает ошибки на обеих строках, говоря, что он не может получить доступ к частной базе :: t Destructor и Private Member Function :: t :: f () .
, какой комбинированный комбинированный :: f () .
, какой комполированный композит или это поведение? пытался прочитать стандарт, чтобы определить ответ, но я не понимаю.
Подробнее здесь: https://stackoverflow.com/questions/797 ... ber-access
Мобильная версия