Я получаю ошибку C3861 с / permissive- compilations в VS2019, когда у меня есть глубокая иерархия наследования с самым производным шаблоном, обращающимся к защищенным символам из корня, производного от класса
class BaseClass
{
protected:
void baseClassMethod()
{
m_value = 0;
}
int m_value;
};
template<typename T1>
class DerTmpl_1 : public BaseClass
{
public:
T1 doTheThing(T1 t)
{
baseClassMethod();
m_value = 123;
return t;
}
};
template<typename T1, typename T2>
class DerTmpl_2 : DerTmpl_1<T1>
{
public:
T2 doTheOtherThing(T1 t1, T2 t2)
{
baseClassMethod(); // C3861 here, but only with /permissive-
doTheThing(t1);
m_value = 456; // C3861 here, but only with /permissive-
return t2;
}
};
Есть ли какие-либо указания относительно того, почему DerTmpl_2 :: doTheOtherThing не компилируется?
C3861 ошибка вывода
1>C:\Users\kevin\source\repos\cpp17-permissiveMinusTest\cpp17-permissiveMinusTest\cpp17-permissiveMinusTest.cpp(35,3): error C3861: 'baseClassMethod': identifier not found
1>C:\Users\kevin\source\repos\cpp17-permissiveMinusTest\cpp17-permissiveMinusTest\cpp17-permissiveMinusTest.cpp(37,3): error C3861: 'm_value': identifier not found