साथ बनाम जीसीसी MSVC के व्यवहार निम्नलिखित कोड पर विचार करें:असंगत sizeof
#include <cstddef>
class A
{
public:
struct B
{
int M;
};
static void StaticFunc();
};
void A::StaticFunc()
{
const std::size_t s0 = sizeof(::A::B::M);
const std::size_t s1 = sizeof(A::B::M);
const std::size_t s2 = sizeof(B::M);
}
int main()
{
const std::size_t s3 = sizeof(A::B::M);
return 0;
}
GCC compiles it, बस अप्रयुक्त चर के बारे में चेतावनी। लाइनों
const std::size_t s0 = sizeof(::A::B::M);
const std::size_t s1 = sizeof(A::B::M);
StaticFunc()
में पर
error C2326: 'void A::StaticFunc(void)': function cannot access 'A::B::M'
: तथापि
विजुअल C++ 2015 के साथ यह संकलन करने में विफल रहता है।
अन्य लाइन s2 = ...
, और main()
में संकलित ठीक है।
क्या यह एमएसवीसी में एक बग है, या क्या मुझे यहां कुछ बुनियादी याद आती है?
मुझे कोई कारण नहीं दिखता कि इसे क्यों काम नहीं करना चाहिए। तो मैं कुछ हद तक आत्मविश्वास के साथ कहूंगा कि यह एक वीएस बग है। – bolov
चूंकि ये कंपाइलर बनाम कंपाइलर प्रश्न यहां लोकप्रिय हैं, चलो पूल खोलें: – bolov
ए) यह एक वीएस बग – bolov