आप अंतर्निहित एक साझा सूचक आप स्पष्ट रूप से एक कार्यकर्ता दिनचर्या है कि एक गैर aliased सूचक पैरामीटर लेता प्रतिनिधि सकता है के साथ जुड़े वस्तु पर गैर aliased कार्रवाई करना चाहते हैं:
void worker (mytype *__restrict x, mytype *__restrict y)
{
// do something with x, y with a no-alias guarantee
}
int main()
{
std::shared_ptr<mytype> p(new mytype);
std::shared_ptr<mytype> q(new mytype);
// explicitly delegate the shared object
worker(p.get(), q.get());
return 0;
}
मैं नहीं कर रहा हूँ निश्चित रूप से आपके मन में क्या है, लेकिन इससे उच्च स्तरीय मेमोरी प्रबंधन को स्मार्ट पॉइंटर द्वारा सुरक्षित रूप से निपटाया जा सकता है, जबकि निम्न स्तर के काम संभवतः नो-उर्फ पॉइंटर्स के साथ अधिक कुशलतापूर्वक करते हैं।
@BenVoigt के रूप में इंगित किया गया है, restrict
केवल c99
- c++
का ऑफिकल हिस्सा है इसके बारे में कुछ भी नहीं जानना चाहिए। MSVC
इसे किसी भी तरह से __restrict
के माध्यम से समर्थन करता है और जैसा कि आपने कहा है GCC
में __restrict__
है।
उम्मीद है कि इससे मदद मिलती है।
स्रोत
2012-01-29 00:52:33
सी ++ में कोई 'प्रतिबंध' या '__restrict__' कीवर्ड नहीं है। यदि आप किसी विशेष कंपाइलर में भाषा एक्सटेंशन के बारे में पूछ रहे हैं, तो आपको यह कहना होगा। –
@BenVoigt क्षमा करें - संपादन में स्पष्ट। – James
यह असंभव लगता है कि प्रतिबंधित पॉइंटर्स पर काम करना चाहते हैं कि एक सूचक सूचक के साझा स्वामित्व का दावा करना चाहता है। उल्लेख नहीं है कि साझा स्वामित्व वाले सिस्टम में आप यह जानकर समाप्त होते हैं कि पॉइंटर्स वास्तव में अलग हैं। किसी भी मामले में, मुझे लगता है कि आपका फ़ंक्शन वास्तव में 'std :: shared_ptr' 'के बजाय [प्रतिबंधित] पॉइंटर्स लेना चाहता है। –