Was ist der Unterschied zwischen void () und void {}?

Grundsätzlich würde ich gerne wissen, warum der Compiler ablehntptr2 Erklärung:

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

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

Schauen Sie sich andieser Code wenn du das denkstptr1 ist ein Funktionszeiger:

#include <iostream>
using namespace std;

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

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

Die Ausgabe istvoid f(T) [with T = void*].

Antworten auf die Frage(1)

Ihre Antwort auf die Frage