पर काम करता है निम्नलिखित कोड पर विचार करेंकि 32 और 64-बिट
template<unsigned int N> void foo(std::bitset<N> bs)
{ /* whatever */ }
int main()
{
bitset<8> bar;
foo(bar);
return 0;
}
जी ++ 64 बिट पर इस बारे में शिकायत क्योंकि < 8> एक अहस्ताक्षरित लंबे int के रूप में व्याख्या हो जाता है एक std :: bitset टेम्पलेट लिखने के लिए कैसे , जो बिल्कुल टेम्पलेट से मेल नहीं खाता है। यदि मैं टेम्पलेट को बिना हस्ताक्षर किए गए लंबे int कहने के लिए बदलता हूं, तो 32-बिट संकलन शिकायत करते हैं।
जाहिर है एक तरह से इसे ठीक करने के < 8> bitset बदलने के लिए < 8ul bitset करने के लिए> है, लेकिन किसी भी तरह से इतना है कि यह एक अंकीय की जो कुछ भी डिफ़ॉल्ट व्याख्या के साथ काम करेंगे करने के लिए टेम्पलेट हिस्सा फिर से लिखें है शाब्दिक है?
आगे समस्या यह है कि मैं सिर्फ नहीं कर सकता यह टेम्पलेट क्योंकि तब है बिटसेट शिकायत करता है कि इसका तर्क एक हस्ताक्षरित int होना चाहिए –