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*]
.