clang vs g cc: поиск функции с перегрузками операторов - PullRequest
2 голосов
/ 18 марта 2020

в 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

...