Почему это не компилируется? анонимный класс + анонимный объект c ++ 17

Вопрос: Почему анонимный объект анонимных классов не разрешен в Visual C ++ 17?

Разрешены анонимные объекты (в данном случае я думаю, что это временно):

class Foo
{
public:
virtual int bar() = 0;
};

int main()
{
class ConcreteFoo : public Foo
{
public:
int bar() override
{
//some operation
}
};
ConcreteFoo{}.bar();
return 0;
}

Разрешены анонимные занятия:

int main()
{
class : public Foo
{
public:
int bar() override
{
//some operation
}
} myFoo;
myFoo.bar();
return 0;
}

Оба вместе не допускаются:

int main()
{
class : public Foo
{
public:
int bar() override
{
//some operation
}
}{}.bar();
return 0;
}

Почему бы и нет? я использую Visual C ++ 17.

Ошибки:

1>c:\users\peter\downloads\nationsgamemockup\nationsgamemockup\nationsgamemockup.cpp(37): warning C4094: untagged 'class' declared no symbols
1>c:\users\peter\downloads\nationsgamemockup\nationsgamemockup\nationsgamemockup.cpp(37): error C2143: syntax error: missing ';' before '{'
1>c:\users\peter\downloads\nationsgamemockup\nationsgamemockup\nationsgamemockup.cpp(37): error C2059: syntax error: '.'

1

Решение

Задача ещё не решена.

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]