São std :: já córregos móvel?
Pergunta
GNU gcc 4.3 suporta parcialmente o próximo c ++ 0x padrão: entre os implementada apresenta a referência de rvalue. Por meio da referência rvalue deve ser possível deslocar um objecto não copiável ou retorná-lo a partir de uma função.
Você std :: córregos já móvel por meio de referência rvalue ou faz o atual biblioteca implementação falta alguma coisa?
Solução
Na atual g ++ svn, suporte de referência rvalue ainda não foi adicionado ao córregos. Eu suspeito acrescentando que não será muito difícil e como sempre com software de código aberto, patches são, tenho certeza, bem-vindo!
Outras dicas
Depois de uma rápida investigação ele sai que a referência rvalue apoio não foi adicionado ainda de córregos.
Para retornar um objeto não-copiável de uma função de fato é suficiente para implementar o movimento construtor como segue:
struct noncopyable
{
noncopyable()
{}
// move constructor
noncopyable(noncopyable &&)
{}
private:
noncopyable(const noncopyable &);
noncopyable &operator=(const noncopyable &);
};
Tal construtor é suposto para transferir a propriedade para o novo objeto de deixar o que está sendo transmitido em um estado padrão.
Dito isto, é possível retornar um objeto a partir de uma função desta forma:
noncopyable factory()
{
noncopyable abc;
return std::move(abc);
}
Enquanto std :: fluxo não suporta construtores movimento parece que os contêineres STL enviados com gcc 4.3.2 não oferecem suporte a ele.