जीसीसी, क्लैंग, आईसीसी और एमएसवीसी सभी इस कोड को अस्वीकार करते हैं, लेकिन मुझे सी ++ मानक के नवीनतम कामकाजी मसौदे में कोई उल्लंघन नियम नहीं मिला है।क्या टेम्पलेट का एक nonstatic सदस्य डेटा या समारोह के लिए विशेषज्ञ कर सकते हैं?
नियम पहले से ही मानक में है, या यह एक दोष रिपोर्ट में है?
#include <type_traits>
template< typename t >
struct s {
std::conditional_t< std::is_integral<t>::value, t, void() > mem;
};
s<int> a;
s< void * > b;
आप क्या उम्मीद करते हैं कि 'शून्य()' का मूल्यांकन करना चाहिए? – StenSoft
@StenSoft 'शून्य()' केवल 'mem' का प्रकार है। आप ' :: mem' का मूल्यांकन नहीं कर सकते, क्योंकि यह एक अनुपूरक फ़ंक्शन का नाम है। लेकिन यह सवाल के दायरे से बाहर है। –
Potatoswatter
शून्य() फ़ंक्शन प्रकार, आमतौर पर टेम्पलेट प्रकार की कटौती के लिए उपयोग किया जाता है, एक var परिभाषित या घोषित नहीं करता है। –