2016-11-16 8 views
5

n3639 सी ++ 14 में के रों की गोद लेने का प्रस्ताव रखासी ++ 14 में परिवर्तनीय लंबाई Arrays?

लेकिन latest I've been able to find सूची के रूप में n3639 (कम से कम पहले आयाम के लिए।): सी की पहली सीडी में

विशेषताएं ++ 14, बाद में तकनीकी विनिर्देश

क्या यह कभी तकनीकी विनिर्देश में बना है, या यह हाथ से खो गया था?

मेरे सवाल के लिए कारण, मैं इस कोड ध्यान दिया जाता है: (। जब "-pedantic" झंडा प्रयोग किया जाता है)

void f(size_t n) { 
    int a[n]; 
    for (size_t i = 0; i < n; ++i) 
     a[i] = 2 * i; 
    sort(a, a + n); 
} 

यह दृश्य स्टूडियो 2015 में और जीसीसी में निर्माण करने के लिए विफल रहता है

दृश्य स्टूडियो के तहत gcc5.1 तहत Works fine, लेकिन अभी भी fails to build 2015.

यह सिर्फ सी ++ 14 में c99 की भिन्न लंबाई सरणी समर्थन गलत तरीके से जीसीसी या इस किसी भी तरह सी ++ 14 और विजुअल स्टूडियो में आने से पहले किया है 2015 faile इसे लेने के लिए डी?

संपादित करें: ऐसा लगता है कि जीसीसी gcc6.2 में समर्थन हटा दिया गया है दिखता है: http://coliru.stacked-crooked.com/a/303ae1970fa3f5d2

+2

सी ++ 03 या उससे पहले के बाद यह हमेशा जीसीसी विस्तार रहा है। –

+1

जीसीसी इसे एक विस्तार के रूप में समर्थन करता है। अपनी चेतावनी झंडे चालू करें। या बेहतर अभी तक, सी ++ में वीएलए का उपयोग न करें। – DeiDei

+1

[इसे मानक से हटा दिया गया था] (https://gcc.gnu.org/projects/cxx-status.html) –

उत्तर

9

सबसे पहले, n3639 (क्रम बाउंड (एआरबी) के साथ जगह सरणी में डालने के लिए नहीं चर लंबाई सरणी VLA देख रहा था)। ARBs Vlas के एक सबसेट जो बाहर रखा का समर्थन करेगा:

  • बहुआयामी सरणियों, जहां शीर्ष स्तर के अलावा किसी अन्य क्रम बाध्य है (सादृश्य में, सरणी नए का समर्थन नहीं करता है कि या तो)
  • के लिए संशोधन समारोह declarator वाक्य रचना
  • sizeof(a) जा रहा है एक क्रम से मूल्यांकन a
  • typedef int a[n]; का मूल्यांकन n और typedef
  • 0 से गुजर रहा है कि के आकार लौटने अभिव्यक्ति

Issaquah, वाशिंगटन में 2014 के फरवरी में, मानक समिति unanimously votedn3820 से सरणी एक्सटेंशन तकनीकी विनिर्देश के रूप में में, यह प्रारंभिक संशोधन n3639 और the proposal of Dynarrays से उत्पन्न है।

मई 2014 में n4043 और n4050 क्रमशः ऐरे एक्सटेंशन तकनीकी विनिर्देश के डायनरे और एआरबी अनुभागों में कुछ "अर्ध-संपादकीय मुद्दों" को संबोधित करने का प्रयास किया।

लेकिन the standard committee's October 24 2014 teleconference भाषा सुविधाओं, कार्यान्वयन संभावनाओं, और ऐरे एक्सटेंशन तकनीकी विशिष्टता की इच्छा पर भारी असहमति का हवाला देते हुए अंततः इसे लिंबो की स्थिति में वर्णित करता है।

The standard committee's May 2015 meeting in Lenexa, Kansas पर चला गया दिशात्मक मार्गदर्शन कि सरणी एक्सटेंशन तकनीकी विनिर्देश स्वीकार कर लिया होता नहीं किया जा में यह वर्तमान रूप है, और सिफारिश देने के लिए:

स्ट्रिपिंग अपने मौजूदा सामग्री के टी एस, और एक व्यावहारिक प्रस्ताव की प्रतीक्षा साथ [1]

अंततः the standard committee's March 2016 meeting in Jacksonville, Florida सरणी एक्सटेंशन पुष्टि पर तकनीकी विनिर्देश है कि कुछ सरणी से संबंधित प्रस्तावों लक्ष्य कर रहे हैं बंद करने के लिए ले जाया गया आने के लिए इसके बजाय पुस्तकालय बुनियादी बातों तकनीकी विनिर्देशन में आईएनजी। unanimous vote to do so 8 दृढ़ता से पक्ष में, 5 पक्ष में, और 6 शेष था।

संयोग से लाइब्रेरी फंडामेंटल तकनीकी विशिष्टता में जाने वाला एकमात्र सरणी संबंधित कार्य के make_array के रन-टाइम निर्माण का भत्ता है। Bjarne Stroustrup, सी ++ के निर्माता, waxed eloquent on the topic:

हम चलाने के समय निर्धारित सीमा और इस तरह के भंडारण के लिए सुरक्षित उपयोग के साथ सरणियों की जरूरत है "कल" ​​

दुःख की बात है के लिए डॉ Stroustrup, हमें, और सी ++ समुदाय पूरी तरह से, सरल सी 99 वीएलए फॉर्म में सी ++ के साथ एआरबी/वीएलए को पुनर्जीवित करने की कोई भविष्य की योजना नहीं है।

संबंधित मुद्दे