पर कार्यात्मक पैरामीटर के तर्कों को अनपॅक करना मेरे पास C++ में टेम्पलेट कक्षाओं में कार्यात्मक टेम्पलेट तर्क शामिल हैं।एक C++ टेम्पलेट वर्ग
मैं एक टेम्पलेट वर्ग Foo
एक एकल टेम्पलेट पैरामीटर लेने का निर्धारण कैसे करेंगे Fun
template <typename Fun>
struct Foo {
...
};
ऐसा है कि जैसे
void bar(std::string a, float b, char c)
{
...
}
एक समारोह को देखते हुए तो Foo<bar>::args_t
std::tuple<std::string, float, char>
क्या यह पी है ossible? (std::tuple
यहाँ के उपयोग सिर्फ स्थूलता के लिए है। आम तौर पर अगर यह एक कार्यात्मक टेम्पलेट पैरामीटर के तर्कों पर पैटर्न मिलान की तरह कुछ करने के लिए संभव है मैं सोच रहा हूँ।)
बिंदु Foo
परिभाषित करने के लिए होने से बचने के लिए है जैसे
template Foo<typename A, typename B, typename C, typename D,
D (*Fun)(A a, B b, C c)>
struct Foo {
typedef std::tuple<A,B,C> args_t;
};
एक तरह से जो दोनों प्रकार्य तर्क की एक निश्चित संख्या के लिए प्रतिबद्ध है, और टेम्पलेट पैरामीटर के रूप में स्पष्ट रूप से प्रदान किया जाना तर्क की आवश्यकता होती है और समारोह के प्रकार वापसी की आवश्यकता है में। (विविधता वाले टेम्पलेट्स का उपयोग करके Foo
परिभाषित करना संभवतः पूर्व समस्या को हल कर सकता है, लेकिन बाद के बारे में क्या?)
धन्यवाद!
variadic टेम्पलेट्स में देखो नेस्टेड प्रकार उपयोग कर सकते हैं। इसके अलावा आप नामकरण प्रकारों से '_t' से बचना चाहेंगे क्योंकि वे POSIX में आरक्षित हैं। – user657267
@ user657267 मैं विविध टेम्पलेट्स से काफी अवगत हूं, और मेरे प्रश्न में उनका उल्लेख किया है। '_t' के साथ नामकरण प्रकारों के बारे में टिप्पणी बाएं क्षेत्र से थोड़ा सा प्रतीत होता है। – factotum
यही कारण है कि यह एक टिप्पणी है और एक जवाब नहीं है। – user657267