मैं आवरण कि टेम्पलेट समारोह N बार का आह्वान किया है:C++ 11 समारोह डिफ़ॉल्ट तर्क मान के साथ variadic आर्ग
template <std::uint16_t N, typename F, typename ... Args>
inline typename std::result_of<F && (Args &&...)>::type retry_n(F && f, Args&& ... ax)
{
for (auto i = 0; i < N; ++i)
{
try
{
return std::forward<F>(f)(std::forward<Args>(ax)...);
}
catch (const some_except &e){ /*ignore exception for a while*/ }
}
throw;//re-raise
}
सब कुछ ठीक काम करता है जब तक मैं डिफ़ॉल्ट तर्क के साथ समारोह पारित:
int f(int a, int b, int c = 5);
....
retry_n<10>(f, 1, 2); // error C2198: 'bla-bla' : too few arguments for call
कैसे स्पष्ट तर्क के बिना डिफ़ॉल्ट तर्क का उपयोग करने के लिए?
'retry_fn <10> ([] (ऑटो ... x) का उपयोग के साथ एक functor में, 1, 2) ' –
@ ᐅ जोहान्सशैब-लिटब ᐊ हाँ यह स्पष्ट कार्यवाही – Dewfy