इंटेल सी ++ संकलक (संस्करण 16.0.3.207 बिल्ड 20,160,415) विरासत जब आधार वर्ग के निर्माता उपयोग करने के साथ विरासत में मिला है स्पष्ट विनिर्देशक छोड़ रहा है। क्या यह एक बग है?एक स्पष्ट निर्माता (इंटेल सी ++)
struct B
{
explicit B(int) { }
};
struct D : B
{
using B::B;
};
B b = 1; // Not OK, fine
D d = 1; // Not OK with Microsoft C++ and GCC, but OK with Intel C++
यह निश्चित रूप से एक बग माना जाता है। विरासत रचनाकारों को सिर्फ "उपयोग" निर्देश के साथ उजागर किया जाता है, इसलिए यह बेस क्लास के समान कॉल होना चाहिए। – Argenet
एकमात्र चीज जो मैंने पाया, एक स्पष्ट कन्स्ट्रक्टर की परिभाषा के अलावा: "यदि एक उपयोग-घोषणा एक निर्माता (3.4.3.1) नाम देती है, तो यह स्पष्ट रूप से कक्षा में रचनाकारों का एक सेट घोषित करता है जिसमें उपयोग-घोषणा प्रकट होती है (12.9) "यही वह है। मुझे कुछ भी स्पष्ट नहीं दिखता है (पन इरादा नहीं है) जो बताता है कि एक या दूसरा व्यवहार सही है। –