मेरे पास एक वर्ग है:
struct event_counts {
uint64_t counts[MAX_COUNTERS];
event_counts() : counts{} {}
// more stuff
};
आमतौर पर मैं डिफ़ॉल्ट (शून्य) को दिखाना चाहता हूं counts
जैसा कि दिखाया गया है।
प्रोफाइलिंग द्वारा पहचाने गए चयनित स्थानों पर, मैं सरणी आरंभीकरण को दबाना चाहूंगा, क्योंकि मुझे पता है कि सरणी को अधिलेखित किया जाना है, लेकिन संकलक यह पता लगाने के लिए पर्याप्त स्मार्ट नहीं है।
इस तरह के "माध्यमिक" शून्य-अर्ग कंस्ट्रक्टर बनाने के लिए एक मुहावरेदार और कुशल तरीका क्या है?
वर्तमान में, मैं एक टैग क्लास का उपयोग कर रहा हूं, uninit_tag
जिसे एक डमी तर्क के रूप में पारित किया गया है, जैसे:
struct uninit_tag{};
struct event_counts {
uint64_t counts[MAX_COUNTERS];
event_counts() : counts{} {}
event_counts(uninit_tag) {}
// more stuff
};
फिर मैं नो-इनिट कंस्ट्रक्टर को कॉल करता हूं जैसे event_counts c(uninit_tag{});
मैं निर्माण को दबाना चाहता हूं।
मैं उन समाधानों के लिए खुला हूं जिनमें डमी वर्ग का निर्माण शामिल नहीं है, या किसी तरह से अधिक कुशल हैं, आदि।