निम्नलिखित variadic टेम्पलेट को देखते हुए:खाका कटौती
template<typename... Params>
void fun(void(*f)(Params...), Params... params) {
f(params...);
}
int main() {
fun(+[](int a, int b) {}, 2, 3);
}
अब जब एक लैम्ब्डा मैं स्पष्ट रूप से सभी लैम्ब्डा तर्क के प्रकार निर्दिष्ट करने की आवश्यकता के साथ fun
लागू के लिए। ऐसा लगता है कि int, int
2, 3
से लिया जा सकता है क्योंकि यह अनावश्यक लगता है। क्या इसे अधिक संक्षिप्त और स्वचालित बनाने का कोई तरीका है?
मैं काम करने के लिए निम्न चाहते हैं, लेकिन यह नहीं है:
template<typename... Params>
void fun(void(*f)(Params...), Params... params) {
f(params...);
}
int main() {
fun(+[](auto a, auto b) {}, 2, 3);
}
मैं g++ 5.4.0
और -std=c++14
साथ संकलन कर रहा हूँ।
आपको 'ऑटो' के बजाय 'int' टाइप करने में कोई समस्या है? – Brian
@ ब्रायन हां, cuz यह मुझे यह समझाने की आवश्यकता है कि यह 'int' है। यह और अधिक नाटकीय बनाने के लिए और कुछ भी हो सकता है। –