基本上,我想知道为什么编译器拒绝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*]
。