¿Cuál es la diferencia entre void () y void {}?
Básicamente, me gustaría saber por qué el compilador rechazaptr2
declaración:
int main() {
// this one works
decltype(void())* ptr1;
// this one does not
decltype(void{})* ptr2;
}
Echa un vistazo aeste código si lo creesptr1
es un puntero de función:
#include <iostream>
using namespace std;
template <class T>
void f(T t) {
cout << __PRETTY_FUNCTION__ << endl;
}
int main() {
decltype(void())* ptr;
f(ptr);
}
La salida esvoid f(T) [with T = void*]
.