我在 godbolt.org 中输入以下代码,并使用 gcc 10.1 和 clang 10 编译它:
#include <algorithm>
#include <vector>
typedef std::vector<int> V;
template<class InputIt, class T>
InputIt myfind(InputIt first, InputIt last, const T& value) {
for (; first != last; ++first) {
if (*first == value) {
return first;
}
}
return last;
}
V::iterator my_find_int(V& v, int i) {
return myfind(v.begin(), v.end(), i);
}
V::iterator std_find_int(V& v, int i) {
return std::find(v.begin(), v.end(), i);
}
Run Code Online (Sandbox Code Playgroud)
使用-O3或 with -Os,两个编译器都会生成我所期望的内容my_find_int(gcc 10.1,-Os …