This code:
struct F
{
F() = delete;
void foo() {};
};
int main()
{
F{}.foo();
}
Live demo here.
Suffice to say I would assume it to not compile (as we're calling a deleted constructor). Why does it compile on any compiler I've tried?
I've noticed that not using uniform initialization, compiling the code will result in the expected error. So why is it that the (aggregate?) initialization is still allowed in the presence of a deleted constructor?