Здравствуйте, watchmaker, Вы писали:
W>Но тут, конечно же всё ломается из-за неперемещаемых типов:struct U {
W> U(int);
W> U(const U&) = delete; // oops
W> friend bool operator==(const U&, const U&);
W>};
W>
W>а сейчас такой emplace валидный.
Сразу напрашивается создавать сначала только ключ, а потом ноду ) т.к. обычно обьект ключа легковесный, а вся жесть в значении )
W>А если и это множество типов игнорировать, то сломается на типах, значение hash у которых зависит от this (как в python) (может кто-то безумный элементы DSU хранит в hash-map). И опять без знаний об внутреннем устройстве контcруктора эту проблему не обойти.
мне кажется это не валидно в принципе, т.к. как вы его искать планируете?