C ++ 11 встроенная инициализация объекта не работает (в GCC), когда этот указатель используется при инициализации и существует виртуальное наследование в иерархии.Может ли это быть ошибка GCC (потому что он работает в CLang)?Или пробел в самом стандарте C ++ 11?
Пример (можно попробовать в здесь ), когда приведенный ниже код скомпилирован с GCC:
FieldIndex m_inB{"inB", this};
не исполняется.Но он выполняется при компиляции с CLang.
РАБОЧАЯ РАБОТА: Получите A из FieldIndexContainer
как виртуальный
#include <string.h>
#include <iostream>
#include <list>
using namespace std;
class FieldIndexContainer
{
public:
class FieldIndex
{
public:
FieldIndex( const std::string& fieldName, FieldIndexContainer* owner)
{
cout << "FieldIndex called = " << fieldName << endl;
}
};
};
class A : public FieldIndexContainer
{
public:
FieldIndex m_inA{ "inA", this};
};
class Mid : virtual public A {};
class B : virtual public Mid
{
public:
FieldIndex m_inB{"inB", this};
};
int main ()
{
B* b = new B;
return 0;
}