संभव डुप्लिकेट:बढ़ावा :: enable_if_c काम करने के लिए प्रतीत नहीं होता
template<typename T, size_t N> class Vector
मैं विशिष्ट के लिए निर्माताओं को सक्षम करना चाहते:
How to use enable_if to enable member functions based on template parameter of class
मैं एक वर्ग टेम्पलेट N
, इसलिए मैं करता हूं:
Vector(typename boost::enable_if_c<N==2, T>::type const &e0, T const &e1) {
data[0] = e0;
data[1] = e1;
}
लेकिन कंपाइलर (एमएसवीसी 2010 एसपी 1) मुझे SFINAE लगाने के बजाय एक त्रुटि देता है। त्रुटि है:
error C2039: 'type' : is not a member of 'boost::enable_if_c<B,T>'
with
[
B=false,
T=float
]
समस्या क्या है? क्या यह एक ज्ञात समस्या है? मेरे द्वारा यह कैसे किया जा सकता है? क्या यह static_assert
का उपयोग करने का एकमात्र समाधान है?
संपादित करें: जीसीसी या तो सफल होने नहीं करता है: http://ideone.com/7Ejo8
आप ideone पर एक SSCE पोस्ट कर सकते हैं (और यह जीसीसी पर सफलतापूर्वक संकलन दिखाने)? –
@ बेन वोगेट: जीसीसी इसे संकलित नहीं करता है। –
@Vlad Lazarenko: लेकिन वहां यह ठीक से वर्णन नहीं किया गया है कि इसे कैसे ठीक किया जाए। –