2016-04-15 7 views
8

निम्नलिखित सरल कोड में newest Visual Studio compiler (MSVC 2015 अपडेट 2) एक त्रुटि पैदा करता है:सी ++ एक डिफॉल्ट की विशेष सदस्य कार्यों के कई संस्करण - MSVC में त्रुटि 2015

struct Foo 
{ 
    template<typename ... Args, typename = std::enable_if_t<sizeof...(Args) != 0> > 
    Foo(Args ...) {} 
    Foo() = default; // error 

    //Foo() {}  //this works! 
}; 

त्रुटि संदेश

है

त्रुटि C2580: 'फू :: फू (शून्य)': एक डिफॉल्ट की विशेष सदस्य कार्यों के कई संस्करण की अनुमति नहीं है

gcc मैं स्वीकार करता है बिना किसी समस्या के टी।

यह मुझे एक स्पष्ट बग के रूप में लगता है (इस अर्थ में कि यह मानक द्वारा समर्थित नहीं है)। कोई अन्य विचार?

+0

केवल थोड़ा सा संबंधित: मैं वीएस2015 के यूपीडी 2 के साथ इतना असम्पीडित हूं, यह लगभग हंसने योग्य है, क्या यह उन चीजों के लिए नहीं था जो उस स्टीमिंग ढेर के परिणामस्वरूप @ काम को तोड़ चुके हैं। संबंधित: क्लैंग इसे कोई समस्या नहीं खाती है। – WhozCraig

+1

मुझे लगता है कि यह दो चरण लुकअप की कमी के कारण है? ओह, मैं मजाक कर रहा हूँ मुझे कोई जानकारी नहीं है। मैंने कुछ समय पहले _real_ स्टीमिंग ढेर (यानी सी ++) में विकास के बाद रोक दिया था। –

+1

मुझे एक बग की तरह लग रहा है। यदि आप किसी कामकाज में रूचि रखते हैं, तो आप इसे 'टेम्पलेट <टाइपनाम आर्म, टाइपनाम ... Args> Foo (Arg, Args ...) बना सकते हैं;' यह संभवतः यह सुनिश्चित करने का एक और सरल तरीका है कि टेम्पलेट कन्स्ट्रक्टर लेता है कम से कम एक तर्क। –

उत्तर

4

यह वीएस 2015 अपडेट 2 में एक बग है। हमने पहले से ही बग तय कर दिया है (202164, हालांकि यह एक आंतरिक बग संख्या है।) इस कोड को अद्यतन 3 बिल्ड में काम करना चाहिए।

+1

यदि आप अपने लिए सत्यापित करने में रुचि रखते हैं, तो हम (एमएस सी ++ कंपाइलर टीम) ने आंतरिक कंपाइलर को http://webcompiler.cloudapp.net/ पर बनाया है ताकि लोग ब्राउज़र में इस तरह की सामग्री का परीक्षण कर सकें। – Rastaban

+1

क्या आप बग पर थोड़ी अधिक जानकारी दे पाएंगे? वास्तव में क्या _is_ बग है? इस तरह, इस पृष्ठ के आगंतुकों को समान लेकिन मामूली रूप से अलग समस्या के साथ पता चलेगा कि क्या आपका बग फिक्स _them_ के लिए भी है। –

संबंधित मुद्दे