मैं निम्नलिखित SSCCE है के लिए segfault कारण बनता है। जीसीसी 6.3 -O3
के तहत सेगमेंटेशन गलती के साथ विफल रहता है।जीसीसी लैम्ब्डा पर कब्जा कर लिया पैरामीटर पैक
मैं [&args...]()
के साथ [&]()
को प्रतिस्थापित करके, पॉइंटर और संदर्भ द्वारा पैक को स्पष्ट रूप से पारित करके समस्या को ठीक कर सकता हूं। हालांकि, अब तक, मैंने सोचा था कि [&]
सभी तर्कों को एक-एक करके सूचीबद्ध करने जैसा ही होगा।
तो क्या गलत हो रहा है?
पीएस: यह -O3
तक सीमित नहीं है। -O0
SEGFAULT नहीं करता है लेकिन अपेक्षित परिणाम वापस नहीं करता है ("नमस्ते विश्व!"):
[:~/tmp] $ g++-6 -std=c++1z param.cpp && ./a.out
[:~/tmp] $
P.P.S: आगे कम SSCCE। अब मुझे -Wall -Wextra
के साथ डायग्नोस्टिक भी नहीं मिला है।
केवल अनुकूलन के साथ होता है। – chris
पुष्टि नहीं कर सकता - '-O0' के साथ भी मेरे लिए होता है (परिशिष्ट देखें) – mrks
@ एक्सागोन, बेशक इसे संदर्भ के आधार पर पारित किया जा सकता है। हालांकि, इसकी प्रतिलिपि नहीं बनाई जा सकती है। यहां एक उदाहरण दिया गया है: http://melpon.org/wandbox/permlink/lj4SQhth5iis81FG – chris