¿Hay algún lugar donde pueda confirmar esto? No estoy seguro si es el problema de GCC o mi código. Por ejemplo, el siguiente código no compila:GCC 4.4/4.5 unique_ptr no funciona para unordered_set/unordered_map
#include <unordered_set>
#include <memory>
using namespace std;
int main() {
unordered_set<unique_ptr<int> > s;
unique_ptr<int> p(new int(0));
s.insert(move(p));
return 0;
}
El mensaje de error es demasiado grande y no quiero ponerlo aquí. La versión de GCC es 4.5.3, el indicador de compilación es -std = gnu ++ 0x. También probado en 4.4.5.
Esto es probablemente porque 'std :: hash' no está especializado para' std :: unique_ptr'. – Mankarse
@Mankarse Existe una especialización para esto, pero confusamente aparece en 20.7.2.6 Compatibilidad con el hash Smart Pointer [util.smartptr.hash] (n3290) justo después de las especificaciones para 'std :: shared_ptr', algo lejos de' std :: unique_ptr'. –
N.B. debería decir 'std :: move' not' move', no quiere que ADL encuentre una función diferente. –