Jaka jest różnica między void () i void {}?

Zasadniczo chciałbym wiedzieć, dlaczego kompilator odrzucaptr2 deklaracja:

int main() {
    // this one works
    decltype(void())* ptr1;

    // this one does not
    decltype(void{})* ptr2;
}

Spojrzeć naten kod Jeśli myślisz, żeptr1 jest wskaźnikiem funkcji:

#include <iostream>
using namespace std;

template <class T>
void f(T t) {
    cout << __PRETTY_FUNCTION__ << endl;
}

int main() {
    decltype(void())* ptr;
    f(ptr);
}

Wyjście jestvoid f(T) [with T = void*].

questionAnswers(1)

yourAnswerToTheQuestion