*clang *c++ *говноИтак, имеем namespace LeechCraft и глобальный неймспейс. В глобальном в кутишных хедерах определяется куча operator== для разных типов. В моем хедере определяется operator== (const LeechCraft::Entity&, const LeechCraft::Entity&), тоже в глобальном неймспейсе.
Если включить кутишный хедер с определениями кутишных op== до моего, то функция, находящаяся в namespace LeechCraft, при попытке инстанциировать шаблонный объект (QList<T>) из глобального неймспейса с типом T из namespace LeechCraft, не найдет соответствующий operator==, а увидит только кутишные.
Поэтому перед включением любого кутишного приходится делать форвард декларейшн:
namespace LeechCraft
{
struct Entity;
}
bool operator== (const LeechCraft::Entity&, const LeechCraft::Entity&);
clang говно.
from idead,
13 months agoRecommended by (1): @O01eg