यदि मैं आधार वर्ग जहां टेम्पलेट नहीं है तो मैं निश्चित रूप से is_base
का उपयोग कर सकता हूं। हालांकि, जब ऐसा होता है, तो मुझे किसी व्युत्पन्न प्रकार से सामान्य रूप से मिलान करने का कोई तरीका नहीं दिखता है। यहाँ मैं क्या मतलब है की एक बुनियादी उदाहरण है:क्या टेम्पलेट विशेषज्ञता में टेम्पलेट बेस से मिलान करना संभव है?
#include <boost/mpl/bool.hpp>
template < typename T >
struct test_base
{
};
template < typename T >
struct check : boost::mpl::false_ {};
template < typename T >
struct check<test_base<T> > : boost::mpl::true_ {};
struct test_derived : test_base<int> {};
#include <iostream>
int main()
{
std::cout << check<test_derived>::value << std::endl;
std::cin.get();
}
मुझे लगता है कि true_
बजाय false_
वापस जाने के लिए चाहते हैं। वास्तविक उदाहरण में 7 टेम्पलेट पैरामीटर हैं, जो सबसे अधिक डिफॉल्ट हैं, और नाम से संदर्भित करने के लिए Boost.Parameter का उपयोग करते हैं। is_base
का उपयोग करने के लिए मुझे किसी भी तरह से पैरामीटर खींचने में सक्षम होना होगा और मुझे आंतरिक टाइपिफ़ी घोषित करने के लिए ऐसा करने का कोई तरीका नहीं दिख रहा है।
मुझे लगता है कि यह असंभव है। गलत सिद्ध होना चाहते हैं।
आप परीक्षण आधार और अक्षम में अद्वितीय टैग प्रकार लागू कर सकते हैं/कि के आधार पर सक्षम करें? – Anycorn
यह एक व्यवहार्य विकल्प है जिसे मुझे अपने बारे में सोचना चाहिए था। फिर भी दिलचस्पी है अगर कोई इसके बिना किसी तरह का रास्ता ढूंढ सकता है। –
@aaa - आपको यह जवाब देना चाहिए। मुझे लगता है कि यह एकमात्र संभव तरीका है इसलिए मुझे कोई जवाब मिलने के कुछ दिनों बाद आप इसके लिए क्रेडिट भी प्राप्त कर सकते हैं। –