मैं संकलन निम्न कोड के साथ समय समस्या हो रही है:सी ++ टेम्पलेट आंशिक विशेषज्ञता सवाल
template <typename T,
template <class T, class Allocator = std::allocator<T> > class C>
bool is_in(const C<T>& a, const C<T>& b);
template <typename T, std::vector> // HERE
bool is_in(const std::vector<T>& a, const std::vector<T>& b)
{
return false; // implementation tbd
}
...
vector<int> a, b;
cout << is_in(a,b) << endl;
त्रुटि संदेश है (लाइन पर "यहाँ" चिह्नित):
error: 'std::vector' is not a type
(की पाठ्यक्रम, मैं में std से वेक्टर शामिल है!)। कोई उपाय? मैंने थोड़ी देर के लिए इसके साथ झुकाया, लेकिन मैं उस बिंदु पर जा रहा हूं जहां मैं कुछ मदद का उपयोग कर सकता हूं :-) मुझे आंशिक रूप से प्रारंभिक टेम्पलेट घोषणा का विशेषज्ञ होना चाहिए ताकि मैं वास्तविक प्रकार के आधार पर कंपाइलर स्विच कार्यान्वयन कर सकूं कंटेनर सी (सेट के लिए is_in होगा, एक वैक्टर के लिए, एक श्रेणी के लिए ..., प्रत्येक बार अलग-अलग एल्गोरिदम के साथ)।
धन्यवाद!
का संभावित हल एक कक्षा में समारोह जगह है। –
Booouuuhhh! :-) बेशक, यह मेरे प्रयासों को कम करेगा - मुझे एक फ़ंक्शन ऑब्जेक्ट रोल करना होगा ... – Frank