В чем разница между void () и void {}?
В основном, я хотел бы знать, почему компилятор отклоняетptr2
объявление:
int main() {
// this one works
decltype(void())* ptr1;
// this one does not
decltype(void{})* ptr2;
}
Взгляни наэтот код если вы думаете, чтоptr1
указатель на функцию:
#include <iostream>
using namespace std;
template <class T>
void f(T t) {
cout << __PRETTY_FUNCTION__ << endl;
}
int main() {
decltype(void())* ptr;
f(ptr);
}
Выходvoid f(T) [with T = void*]
.