Recursos do C ++ 11 no Visual Studio 2012

94

Uma versão de visualização do Visual Studio 2012 (a próxima versão após VS2010) está disponível .

Alguém sabe quais são os novos recursos do C ++ 11 que ele suporta? (Não estou em posição de experimentá-lo no momento).

HighCommander4
fonte
18
E fico desapontado mais uma vez. Agora, para descobrir como usar o GCC / GDB com mais fluência ...
GManNickG
3
GMan: Eu acho que a aceitação dos novos recursos é bastante surpreendente, certamente em vista de onde eles estão vindo (pense no VC 6.0 e estremeça) ... Claro, o suporte do GCC é surpreendente, mas há muitos outros lugares onde está faltando também ...
rubenvb
5
@rubenvn: Só por curiosidade, em que lugares o GCC está faltando?
HighCommander4
5
O GCC não tem falta de suporte para C ++ 11, ele é bastante tocado. VC11 é uma falta de humor. Não está nem perto.
987 S de
9
@ HighCommander4: Em que lugares falta o GCC? Ferramentas de depuração.
user541686

Respostas:

77

É importante notar que o Visual Studio 2010 já tinha um pouco do suporte inicial do C ++ 11. Então, para resumir o que já está vinculado a outras respostas, aqui está o que há de novo no Visual Studio 11 que não fazia parte do Visual Studio 2010:

No início de novembro de 2012, a Microsoft anunciou o Visual C ++ Compiler CTP de novembro de 2012 , que adiciona mais funcionalidade C ++ 11 ao Visual Studio 2012:

Joel Coehoorn
fonte
20
Na verdade, isso é bastante decepcionante ... Eu esperava modelos variados e inicialização uniforme, que o GCC tem suportado por dois anos e meio e um ano e meio, respectivamente ...
HighCommander4
A inicialização uniforme @High não está nem na lista de recursos na especificação (nem mesmo aparece com um "Não"). Existe talvez outro nome para isso?
Joel Coehoorn
2
Eu realmente amo meu tipo seguro de impressão e funções printf. Eu realmente esperava que 2011 finalmente adicionasse modelos variadic. Variáveis ​​ausentes também estão afetando emplace_backe make_shared. Existe algo sobre cl que torna particularmente difícil implementar variadics?
deft_code
5
Herb Sutter disse em sua segunda sessão de construção ( channel9.msdn.com/Events/BUILD/BUILD2011/TOOL-835T ) que eles tentaram fazer modelos variados ... tentaram e tentaram e não foram concluídos a tempo para esta versão. Isso afetou as outras coisas que eles também podiam fazer.
Kate Gregory
2
Aqui está uma boa comparação de diferentes compiladores em C ++ 11. wiki.apache.org/stdcxx/C++0xCompilerSupport Boa regra: não use C ++ 11 no GCC e espere que ele compile no VS2012
Chris Hill
25

Aqui está a lista de recursos da nova versão do Visual Studio e aqui está a lista do que todos os compiladores suportam

Drahakar
fonte
2
Não quero ser muito exigente, mas seu segundo link mostra suporte x0 e não suporte 11.
N_A
Você está certo, mas ainda fornece uma boa visão geral de todos os compiladores e o que eles implementaram.
Drahakar de
Apenas pensei que seria bom ser claro. Eu concordo que é útil.
N_A
1
Esperançosamente, é um wiki, alguém informado pode querer atualizá-lo ^. ^
Drahakar
2
Bem, parece que foi atualizado recentemente (alegria para o mundo ...) :)
Drahakar
6

Existe uma lista . O que mais me impressiona são as características que ainda faltam :

  • Eles disseram que implementariam modelos variados como uma prioridade, mas não o fizeram.
  • Ainda teremos que declarar os construtores move manualmente para muitas classes, uma vez que não há construtores delegados.
  • Construtores de herança não estão presentes, e isso seria realmente necessário para algum código
  • Sem inicialização uniforme, em particular sem listas de inicializadores. Isso é péssimo quando você os usa com o g ++.
  • Ainda não há armazenamento local de thread correto. Então você está preso boost::thread_specific_ptrpor um tempo.

Todos os outros recursos que ainda estão faltando são principalmente coisas que você pode viver sem. O que listo aqui é exatamente o que me incomoda todos os dias quando trabalho com o VS10. É tão irritante que eles não funcionaram no compilador.

EDIT: Devo também acrescentar que emplace_back(um ótimo recurso para os contêineres de biblioteca padrão) não está implementado corretamente.

Alexandre C.
fonte
6
Eles fizeram dos modelos variados uma prioridade. É por isso que, quando os modelos variados não foram concluídos a tempo, os outros recursos de linguagem também não foram. (Exceto, ao que parece, para o range-for skunkworks.)
Kate Gregory
4
? Eu realmente não consigo viver sem inicializadores de membros de dados não estáticos.
Trass3r
O problema com os modelos variados é que o padrão mudou muito tarde e eles não tiveram tempo suficiente para refazer completamente esse recurso.
Ark-kun
5

Durante GoingNative em fevereiro de 2012, a STL anunciou que o range-for estará no VS11 começando com o beta, que é esperado em 29 de fevereiro. Uma gravação da palestra está disponível. "The Reveal" está na marca de uma hora e 38 minutos.

Kate Gregory
fonte