我注意到如果我编译这个
int x() { }我像往常一样收到警告:
$ clang++-7 -pthread -std=c++17 -o main main.cpp
main.cpp:5:11: warning: control reaches end of non-void
function [-Wreturn-type]
int x() { }
^
1 warning generated.
$ ./main但是,如果函数采用任何模板参数:
template <typename y>
int x() { }没有出现警告。
$ clang++-7 -pthread -std=c++17 -o main main.cpp
$ ./main这是编译器中的错误吗?
发布于 2020-04-12 19:22:19
除非您调用(或其他odr-use)函数模板专门化并实例化它,否则实际的结果函数就不存在,除非它在语法上无效,否则您不会得到任何关于它的诊断信息。
我们看不到你的程序的其余部分,因为你不认为一个可复制的例子是重要的,但想必你没有在你的程序中这样做。
在主函数中编写x<int>();,您将看到所需的警告。
https://stackoverflow.com/questions/61176648
复制相似问题