मेरे कोड का उपयोग करता std :: सरणी कहो डिफ़ॉल्ट हेडर रैप करने के लिए कैसे में, मैं क्या करना चाहते हैं:C++, साथ वापस आने
फ़ाइल: सरणी
#pragma once
#ifdef MY_TOOLSET_HAS_STD_ARRAY
#include <array> //recursive include here?
#else
#include <boost/array.hpp>
namespace std
{
using boost::array;
}
#endif
इस तरह एसटीडी कि मेरी परियोजना का उपयोग कर सकते कंपाइलर/मंच के बारे में देखभाल किए बिना :: सरणी। एक समस्या (कम से कम) यह है कि जब std :: सरणी उपलब्ध हो, तो शामिल रिकर्सिव होगा, जब मैं वास्तव में चाहता हूं (अर्थात्) "उस हेडर को शामिल करें जिसमें शामिल किया गया होगा यदि इसमें शामिल नहीं था"।
यह कैसे करें इस पर कोई विचार है? मुझे पता है कि एसडीडी में बूस्ट :: सरणी को खींचना भी खराब अभ्यास माना जा सकता है, इसलिए मुझे उस पर विचारों के बारे में भी दिलचस्पी है।
यह अनिर्धारित व्यवहार है। एक दूसरे का प्रयोग करें। –
'सरणी' बूस्ट के मामले के लिए। टी 1 सही चीज करना चाहिए। –
यह वास्तव में तकनीकी रूप से अपरिभाषित व्यवहार है जो 'std' में सामान डालने के लिए, बुरा अभ्यास नहीं है (लेकिन नाक राक्षसों को बुलाए जाने से पहले, इसे ठीक काम करना चाहिए)। मुझे लगता है कि आप अपने हेडर को कुछ अलग नाम देने के लिए सबसे अच्छे हैं (या इसे एक अलग निर्देशिका में डालें, जैसे बूस्ट ने किया है)। – Cameron