C'è qualche posto in cui posso confermare questo? Non sono sicuro che sia il problema di GCC o del mio codice. Ad esempio, il seguente codice non viene compilato:GCC 4.4/4.5 unique_ptr non funziona per 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;
}
Il messaggio di errore è troppo grande e non voglio mettere qui. La versione di GCC è 4.5.3, il flag di compilazione è -std = gnu ++ 0x. Testato anche su 4.4.5.
Ciò è probabilmente dovuto al fatto che 'std :: hash' non è specializzato per' std :: unique_ptr'. – Mankarse
@Mankarse C'è una specializzazione per esso, ma in modo confuso appare in 20.7.2.6 Supporto hash puntatore intelligente [util.smartptr.hash] (n3290) subito dopo le specifiche per 'std :: shared_ptr', un po 'lontano da' std :: unique_ptr'. –
N.B. dovresti dire 'std :: move' not' move', non vuoi che ADL trovi una funzione diversa. –