आप क्या जरूरत है एक alias template है:
template <size_t S>
using my_array = std::array<double, S>;
आप सीधे एक typedef
टेम्पलेट नहीं कर सकते, this post देखते हैं।
size_t
दूसरा टेम्पलेट पैरामीटर std::array
के प्रकार, लेता नहीं int
है।
अब आप using
के बारे में जानते हैं, तो आपको इसका उपयोग करना चाहिए। यह सब कुछ कर सकता है जो typedef
करता है, साथ ही यह भी करता है। इसके अलावा, आप इसे के साथ typedef
के विपरीत, =
साइन के साथ बाएं से दाएं से पढ़ते हैं, जो कभी-कभी आपकी आंखों को चोट पहुंचा सकता है।
template <typename T>
using dozen = std::array<T, 12>;
और अगर आप std::array
के लिए एक उपनाम बनाने के लिए, यह है जैसे चाहते हैं तो आप अपने टेम्पलेट हस्ताक्षर की नकल करने की आवश्यकता होगी:
मुझे उपयोग की दो और उदाहरण जोड़ें:
template <typename T, size_t S>
using my_array = std::array<T, S>;
- इस वजह से अनुमति नहीं है:
using my_array = std::array;
ए 'std :: array' में * स्थिर * आयाम अभिव्यक्ति है। यह एक चर नहीं हो सकता है। यदि आप इसे एक चर होना चाहते हैं, तो आप 'std :: vector' या शायद कुछ भविष्य' std :: dynarray' (C++ के लिए कुछ भविष्य के मानक में) –