Características de C ++ 11 en Visual Studio 2012

94

Ya está disponible una versión preliminar de Visual Studio 2012 (la próxima versión después de VS2010) .

¿Alguien sabe qué nuevas características de C ++ 11 admite? (No estoy en condiciones de probarlo en este momento).

HighCommander4
fuente
18
Y me quedo decepcionado una vez más. Ahora, para descubrir cómo usar GCC / GDB con más fluidez ...
GManNickG
3
GMan: Creo que su aceptación de las nuevas funciones es bastante asombrosa, ciertamente en vista de dónde vienen (piense en VC 6.0 y estremecerse) ... Claro, el soporte de GCC es asombroso, pero hay muchos otros lugares donde se encuentra falta demasiado ...
rubenvb
5
@rubenvn: Solo por curiosidad, ¿en qué lugares falta GCC?
HighCommander4
5
GCC no carece de soporte para C ++ 11, es bastante diferente. VC11 carece de humor. Ni siquiera está cerca.
987 S
9
@ HighCommander4: ¿En qué lugares falta GCC? Herramientas de depuración.
user541686

Respuestas:

77

Vale la pena señalar que Visual Studio 2010 ya tenía bastante compatibilidad con C ++ 11. Entonces, para resumir lo que ya está vinculado en otras respuestas, esto es lo nuevo en Visual Studio 11 que no formaba parte de Visual Studio 2010:

A principios de noviembre de 2012, Microsoft anunció el CTP de noviembre de 2012 del compilador de Visual C ++ , que agrega más funcionalidad de C ++ 11 a Visual Studio 2012:

Joel Coehoorn
fuente
20
Eso es en realidad bastante decepcionante ... Esperaba plantillas variadas e inicialización uniforme, que GCC ha estado apoyando durante dos años y medio y un año y medio, respectivamente ...
HighCommander4
@ La inicialización uniforme alta ni siquiera está en su lista de características en la especificación (ni siquiera aparece con un "No"). ¿Hay quizás otro nombre para eso?
Joel Coehoorn
2
Realmente me encantan mis funciones de impresión segura y printf. Realmente esperaba que 2011 finalmente agregara plantillas variadas. Las variantes que faltan también están afectando emplace_backy make_shared. ¿Hay algo en cl que hace que sea particularmente difícil implementar variadics?
deft_code
5
Herb Sutter dijo en su segunda sesión de compilación ( channel9.msdn.com/Events/BUILD/BUILD2011/TOOL-835T ) que intentaron hacer plantillas variadas ... probaron y probaron y no se terminaron a tiempo para esta versión. Esto también afectó las otras cosas que podían hacer.
Kate Gregory
2
Aquí hay una buena comparación de diferentes compiladores en C ++ 11. wiki.apache.org/stdcxx/C++0xCompilerSupport Buena regla: no use C ++ 11 en GCC y espere que se compile en VS2012
Chris Hill
25

Aquí está la lista de características de la nueva versión de Visual Studio y aquí está la lista de lo que admiten todos los compiladores

Drahakar
fuente
2
No quiero ser demasiado exigente, pero su segundo enlace muestra soporte x0, no soporte 11.
N_A
Tiene razón, pero aún así proporciona una buena descripción general de todos los compiladores y lo que implementaron.
Drahakar
Solo pensé que sería bueno ser claro. Estoy de acuerdo en que es útil.
N_A
1
Con suerte, es un wiki, alguien informado podría querer actualizarlo ^. ^
Drahakar
2
Bueno, parece que se ha actualizado recientemente (alegría para el mundo ...) :)
Drahakar
6

Hay una lista ahí . Lo que más me llama la atención son las características que aún faltan :

  • Dijeron que implementarían plantillas variadas como una prioridad y no lo hicieron.
  • Aún tendremos que declarar a mano los constructores de movimiento para muchas clases, ya que no hay constructores delegados.
  • Los constructores herederos no están presentes, y esto realmente sería necesario para algunos códigos
  • Sin inicialización uniforme, en particular sin listas de inicializadores. Esto apesta cuando los has usado con g ++.
  • Todavía no hay almacenamiento local de subprocesos correcto. Así que estás atrapado boost::thread_specific_ptrpor un tiempo.

Todas las demás características que aún faltan son principalmente cosas sin las que puede vivir. Lo que enumero aquí es lo que me molesta todos los días cuando trabajo con VS10. Es tan irritante que no trabajaron en el compilador en absoluto.

EDITAR: También agregaré que emplace_back(una gran característica para los contenedores de biblioteca estándar) no está implementada correctamente.

Alexandre C.
fuente
6
Hicieron de las plantillas variadas una prioridad. Por eso, cuando las plantillas variadas no se terminaron a tiempo, tampoco se terminaron las otras funciones del idioma. (Excepto, como resulta, para la gama de skunkworks)
Kate Gregory
4
? Realmente no puedo vivir sin inicializadores de miembros de datos no estáticos.
Trass3r
El problema con las plantillas variadas es que el estándar cambió demasiado tarde y no tuvieron tiempo suficiente para rehacer completamente esa función.
Ark-kun
5

Durante GoingNative en febrero de 2012, STL anunció que range-for estará en VS11 a partir de la versión beta, que se espera el 29 de febrero. Una grabación de la charla está disponible. "The Reveal" está en la marca de una hora y 38 minutos.

Kate Gregory
fuente