>>260
あー本来グローバルも対象になるのか、適当こいてスマソ

だが>>248で質問者が言ってるように、元のコードで順序を変えてもダメなのよ
何故か考えてはちみつのコードを以下のようにしたら同様に通らなかった

namespace ns {
template <class T = int>
struct foo{};

// added
struct hoge{};
int operator +(const hoge &x, const hoge &y) {return 1;}
};


ns::foo<> operator+(const ns::foo<>& x, const ns::foo<>& y) { return ns::foo<>(); }

namespace ns {
template <class T>
void bar(const T&) {
T() + T();
} };

int main() { bar(ns::foo<>()); }

すでに名前空間内に同名の関数があった場合はダメっぽい