в clang против g cc trunk (по состоянию на март 2020 г.) При поиске функции я нахожу странное поведение (не могли бы вы рассказать мне, как это на самом деле называется, относится ли оно к разрешению перегрузки?) При использовании операторов.
#include <vector>
template <typename T>
void blub(std::vector<T> const& i) {
-i;
//getsize(i); //this also fails in gcc
}
int operator-(std::vector<int> const& i) {
return i.size();
}
int getsize(std::vector<int> const& i) {
return i.size();
}
int main() { blub(std::vector<int>{1}); }
При использовании функции, подобной getsize
вместо унарного оператора, не компилируются ни g cc, ни clang, но при использовании компиляции operator-, g cc clang этого не делает. не так ли лязг?
См. https://godbolt.org/z/hgGeH3