2012-12-28 14 views
5

संभव डुप्लिकेट:
Programmatically create static arrays at compile time in C++कैसे एक निश्चित आकार सरणी को प्रारंभ और में एक constexpr समारोह के साथ तत्वों आवंटित करने के लिए सी ++ 11 या बढ़ावा की मदद से

मैं डेटा के बहुत सारे है एक निश्चित सरणी में संग्रहीत करने के लिए, इसके तत्व स्थिति पर निर्भर करते हैं। प्रत्येक तत्व का मान संकलन समय पर गणना की जा सकती है।

मेरे कोड लगभग की तरह है:

int fun(int p) // maybe constexpr 
{ 
    return 0x1<<p; 
} 

int a[17] = { 
    repeat_fun_from_0_to_16(); 
}; 

के बाद से मूल्य के सभी संकलन समय पर निर्धारित किया जा सकता है, वहाँ यह करने के लिए एक तरह से किया जाना चाहिए, मुझे लगता है।

मैंने यह भी देखा कि boost.assignment में repeat() है, लेकिन इस स्थिति के साथ इसका उपयोग कैसे करें, यह नहीं पता।

+4

यह http://stackoverflow.com/questions/12108390/c11-compile-time-calculation-of-array और इस http: // stackoverflow.com/questions/2978259/programmatically-create-static-arrays-at-compile-time-in-c?lq=1 –

+0

मदद कर सकता है धन्यवाद, @aleguna! मैंने इसे दूसरे लिंक के साथ समझ लिया है। – liuyanghejerry

उत्तर

1

@aleguna के लिए धन्यवाद, मैंने इस समस्या को this answer द्वारा हल किया है।

सभी मैं बदलने की जरूरत है मेटा समारोह है:

template<size_t index> struct MetaFunc { 
    enum { value = index << 1 }; 
};