मेरे पास कक्षा Filter
है जिसमें विभिन्न इनपुट के लिए process
ओवरलोड किया गया है।उपनाम?
template< typename T >
class Filter
{
public:
void process(T arr[], size_t len);
T process(T one_value);
void process(std::array &arr);
void process(std::vector &v);
//... many other variants
using operator() = process; // How to write proper?
}
मैं process
को छोड़ते हुए उपयोगकर्ता कोड को आसान बनाने में करना चाहते हैं: filter.process(values)
filter(values)
बन जाएगा। मुझे नहीं लगता कि प्रत्येक संस्करण के लिए एक ओवरलोडेड operator()
लिखना अच्छा विचार है। एक और सुविधाजनक समाधान मौजूद होना चाहिए?
आप पूरी तरह से बाईपास प्रकार-चेकिंग संकलक द्वारा करना चाहते हैं और संभावित सूक्ष्म कीड़े का एक बहुत परिचय है, तो यकीन है कि, आगे बढ़ो हैं:
बस उन सभी भार के निर्माताओं में बजाय इतना की तरह करते हैं। –
किसी भी प्रकार के चेक को बाईपास नहीं कर रहा है, कोई रूपांतरण नहीं है। 'ऑपरेशन' को 'ऑपरेटर() 'के लिए दिए गए तर्क प्राप्त होंगे। – Niall
@ डैनकॉर्न मुझे लगता है कि सी ++ कोड के साथ 'सी ++' टैग का जवाब देना बहुत आम है जो मौजूदा मानक का पालन करता है। यही है, मुझे नहीं लगता कि 'सी ++' टैग सी ++ 03 या किसी अन्य विशिष्ट मानक का तात्पर्य है। –