คุณลักษณะ C ++ 11 ใน Visual Studio 2012


94

เวอร์ชันตัวอย่างของ Visual Studio 2012 (เวอร์ชันถัดไปหลังจาก VS2010) พร้อมใช้งานแล้ว

มีใครรู้บ้างว่าฟีเจอร์ใหม่ของ C ++ 11 ที่รองรับ? (ฉันไม่อยู่ในสถานะที่จะทดลองใช้ในขณะนี้)


18
และฉันก็ผิดหวังอีกครั้ง ตอนนี้เพื่อหาวิธีใช้ GCC / GDB ให้คล่องขึ้น ...
GManNickG

3
GMan: ฉันคิดว่าการที่พวกเขาใช้ฟีเจอร์ใหม่ ๆ นั้นค่อนข้างน่าประหลาดใจแน่นอนว่าพวกเขามาจากไหน (คิดว่า VC 6.0 และตัวสั่น) แน่นอนว่าการสนับสนุนของ GCC นั้นน่าประหลาดใจ แต่ก็มีที่อื่น ๆ อีกมากมาย ขาดด้วย ...
rubenvb

5
@rubenvn: ด้วยความอยากรู้อยากเห็น GCC ขาดในสถานที่ใดบ้าง?
HighCommander4

5
GCC ไม่ได้ขาดการสนับสนุน C ++ 11 แต่ก็เป็นสิ่งที่ดีพอสมควร VC11 ขาดอารมณ์ขัน มันไม่ได้ใกล้เคียง
987 ส.

9
@ HighCommander4: GCC ขาดแคลนในสถานที่ใดบ้าง? เครื่องมือดีบั๊ก
user541686

คำตอบ:


77

เป็นที่น่าสังเกตว่า Visual Studio 2010 มีการรองรับ C ++ 11 ในช่วงต้น ๆ อยู่แล้ว ดังนั้นเพื่อสรุปสิ่งที่เชื่อมโยงอยู่แล้วในคำตอบอื่น ๆ นี่คือสิ่งใหม่ใน Visual Studio 11 ที่ไม่ได้เป็นส่วนหนึ่งของ Visual Studio 2010:

ในช่วงต้นเดือนพฤศจิกายน 2012, ไมโครซอฟท์ประกาศVisual C ++ Compiler พฤศจิกายน 2012 CTPซึ่งจะเพิ่มมากขึ้น C ++ 11 ฟังก์ชันการทำงานกับ Visual Studio 2012:


20
นั่นเป็นเรื่องที่น่าผิดหวังจริงๆ ... ฉันหวังว่าจะได้เทมเพลตที่หลากหลายและการเริ่มต้นที่สม่ำเสมอซึ่ง GCC ให้การสนับสนุนมาสองปีครึ่งและหนึ่งปีครึ่งตามลำดับ ...
HighCommander4

@ การเริ่มต้นที่สม่ำเสมอสูงไม่ได้อยู่ในรายการคุณสมบัติในข้อมูลจำเพาะ (ไม่ได้แสดงด้วย "ไม่ใช่") อาจมีชื่ออื่นอีกหรือไม่?
Joel Coehoorn

2
ฉันชอบฟังก์ชันการพิมพ์และการพิมพ์ที่ปลอดภัยของฉันมาก ฉันหวังเป็นอย่างยิ่งว่าปี 2011 จะเพิ่มเทมเพลตแบบต่างๆ ตัวแปรที่ขาดหายไปก็มีผลเช่นกันemplace_backและ make_sharedมีบางอย่างเกี่ยวกับ cl ที่ทำให้ยากที่จะใช้ตัวแปรหรือไม่?
deft_code

5
Herb Sutter กล่าวในการสร้างครั้งที่สองของเขา ( channel9.msdn.com/Events/BUILD/BUILD2011/TOOL-835T ) ว่าพวกเขาพยายามทำเทมเพลตแบบต่างๆ ... สิ่งนี้ส่งผลต่อสิ่งอื่น ๆ ที่พวกเขาสามารถทำได้เช่นกัน
Kate Gregory

2
นี่คือการเปรียบเทียบที่ดีของคอมไพเลอร์ที่แตกต่างกันบน C ++ 11 wiki.apache.org/stdcxx/C++0xCompilerSupportกฎที่ดี: อย่าใช้ C ++ 11 ใน GCC และคาดว่าจะรวบรวมใน VS2012
Chris Hill

25

นี่คือรายการคุณสมบัติของ Visual Studio เวอร์ชันใหม่และนี่คือรายการสิ่งที่คอมไพเลอร์ทั้งหมดรองรับ


2
อย่าจู้จี้จุกจิกเกินไป แต่ลิงก์ที่สองของคุณแสดงการสนับสนุน x0 ไม่ใช่การสนับสนุน 11
N_A

คุณพูดถูก แต่ก็ยังให้ภาพรวมที่ดีของคอมไพเลอร์ทั้งหมดและสิ่งที่พวกเขานำไปใช้
Drahakar

แค่คิดว่ามันจะดีที่จะชัดเจน ฉันยอมรับว่ามันมีประโยชน์
N_A

1
หวังว่าคงเป็นวิกินะใครบางคนที่แจ้งว่าอาจจะต้องการอัปเดต ^. ^
Drahakar

2
ดูเหมือนว่าเพิ่งได้รับการอัปเดตเมื่อเร็ว ๆ นี้ (ความสุขไปทั่วโลก ... ) :)
Drahakar

6

มีรายการเป็นมี สิ่งที่ดึงดูดใจฉันมากที่สุดคือคุณสมบัติที่ยังขาดหายไป :

  • พวกเขากล่าวว่าพวกเขาจะใช้เทมเพลตตัวแปรเป็นลำดับความสำคัญและไม่
  • เรายังคงต้องประกาศย้ายผู้ก่อสร้างด้วยมือสำหรับหลายชั้นเรียนเนื่องจากไม่มีผู้สร้างที่ได้รับมอบหมาย
  • ไม่มีการสืบทอดคอนสตรัคเตอร์และสิ่งนี้จำเป็นสำหรับบางโค้ด
  • ไม่มีการเริ่มต้นที่เหมือนกันโดยเฉพาะอย่างยิ่งไม่มีรายการเริ่มต้น สิ่งนี้แย่มากเมื่อคุณใช้กับ g ++
  • ยังไม่มีที่จัดเก็บเธรดในเครื่องที่ถูกต้อง คุณติดอยู่กับมันboost::thread_specific_ptrสักพัก

คุณสมบัติอื่น ๆ ทั้งหมดที่ยังขาดหายไปส่วนใหญ่เป็นสิ่งที่คุณสามารถอยู่ได้โดยปราศจาก สิ่งที่ฉันระบุไว้ที่นี่คือสิ่งที่ทำให้ฉันรำคาญทุกวันเมื่อทำงานกับ VS10 มันน่ารำคาญมากที่พวกเขาไม่ได้ทำงานกับคอมไพเลอร์เลย

แก้ไข:ฉันจะเพิ่มว่าemplace_back(คุณลักษณะที่ยอดเยี่ยมอย่างหนึ่งสำหรับคอนเทนเนอร์ไลบรารีมาตรฐาน) ไม่ได้ใช้อย่างถูกต้อง


6
พวกเขาให้ความสำคัญกับเทมเพลตแบบต่างๆ นั่นเป็นเหตุผลว่าทำไมเมื่อเทมเพลตตัวแปรไม่เสร็จทันเวลาฟีเจอร์ภาษาอื่น ๆ ก็ไม่ได้ทำเช่นกัน (ยกเว้นตามที่ปรากฎสำหรับช่วง skunkworks สำหรับ)
Kate Gregory

4
เหรอ? ฉันขาดไม่ได้จริงๆถ้าไม่มีตัวเริ่มต้นสมาชิกข้อมูลแบบไม่คงที่
Trass3r

ปัญหาเกี่ยวกับเทมเพลตแบบต่างๆคือมาตรฐานมีการเปลี่ยนแปลงช้าเกินไปและไม่มีเวลาเพียงพอที่จะทำซ้ำคุณลักษณะนั้นทั้งหมด
Ark-kun

5

ในช่วง GoingNative ในเดือนกุมภาพันธ์ 2012 STL ประกาศว่า range-for จะอยู่ใน VS11 โดยเริ่มจากเบต้าซึ่งคาดว่าจะเป็นวันที่ 29 กุมภาพันธ์ บันทึกของการพูดคุยสามารถใช้ได้ "การเปิดเผย" อยู่ที่เครื่องหมายหนึ่งชั่วโมง 38 นาที




โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.