मैं संभवतः कल्पना नहीं कर सकता कि यह क्यों चुना गया था कि std::bitset::size
गैर स्थैतिक है। यह constexpr
आकार प्राप्त करना बहुत कठिन बनाता है;std :: bitset :: आकार गैर-स्थिर
template<int val>
struct int_
{
static const constexpr value = val;
};
template<size_t size>
auto getBitsetSizeIMPL(std::bitset<size>)
{
return int_<size>{};
}
template<typename BitsetType>
constexpr size_t getBitsetSize()
{
return decltype(getBitsetSizeIMPL(BitsetType{}))::value;
}
जब अगर यह स्थिर थे तुम सब करने के लिए होता
BitsetType::size()
होगा और कार्यक्षमता का कोई बलिदान नहीं होगा: आप कुछ इस तरह लिखने के लिए की है।
क्या कोई ऐतिहासिक कारण है कि मुझे याद आ रही है या क्या कोई तकनीकी तथ्य है जो मुझे याद नहीं है?
Fwiw, आप 'BitsetType {} आकार कर सकते हैं()'। – cpplearner
सच है! इसके बारे में नहीं सोचा था। यह बहुत बेहतर है। लेकिन फिर भी, किसी भी कारण से यह स्थैतिक नहीं हो सकता है? –
वही कारण है कि 'std :: array :: size' स्थिर नहीं है, मैं कल्पना करता हूं। कोई पिछले हफ्ते के बारे में पूछ रहा था। –