के साथ एक सरणी populating जब सिंटेक्स मुद्दा हाँ, मैं std::initializer_list
का उपयोग कर सकते हैं। हां, और भी आसान, मैं कुल प्रारंभिक कर सकता हूं। लेकिन यह कैसे काम करता है? मैं सी ++ 17 के गुना अभिव्यक्तियों के आस-पास अपने सिर को फोल्ड नहीं कर सकता। वहां पर्याप्त उदाहरण नहीं हैं।एक गुना अभिव्यक्ति
यहाँ मैं के साथ आया है:
template<class T, std::size_t N>
struct foo
{
T arr[N];
template<typename... Args>
constexpr foo(Args&&... pack)
{
static_assert(sizeof...(pack) <= N, "Too many args");
std::size_t i = 0;
(arr[i++] = ...);
}
};
int main()
{
foo<int, 5> a(1, 2, 3, 4, 5);
}
संपादित करें: नवीनतम बजना के साथ संकलन। मोड़ अभिव्यक्ति समर्थित हैं।
लाइव उदाहरण:http://coliru.stacked-crooked.com/a/777dc32da6c54892
कम से कम नहीं होना चाहिए '(arr [i ++] = pack ...) '? –
@VaughnCato अभिव्यक्ति में अनपेक्षित पैरामीटर पैक 'पैक' है - इसलिए क्लैंग शिकायत करता है। – DeiDei
वॉन ने कहा: "त्रुटि: पैक विस्तार में कोई अप्रत्याशित पैरामीटर पैक नहीं है" – Deduplicator