【发布时间】:2021-06-12 15:59:52
【问题描述】:
我将尝试组织这个问题,作为问答,希望有同事能从中有所收获。
首先,让我们先回答一个简单的问题,这个程序的输出是什么?
#include <iostream>
template<class T>
void f(T) { std::cout << 1; }
template<>
void f<>(int*) { std::cout << 2; }
template<class T>
void f(T*) { std::cout << 3; }
int main() {
int *p = nullptr;
f( p );
}
【问题讨论】:
-
额外的问题当然是“
f(nullptr)打印什么?” -
@MSalters
nullptr_t不是T*,最好的 C++!
标签: c++ pointers templates overloading template-specialization