cppreference के अनुसार, निम्नलिखित कोड कानूनी है:क्या सी ++ विविध पैरामीटर पैरामीटर के बाद सामान्य पैरामीटर की अनुमति देता है?
template<typename... Args>
void f(Args&&..., bool)
{}
int main()
{
f(1, 2, 3, true); // error! see below for details.
}
:1>main.cpp(59,2): error : no matching function for call to 'f' 1> f(1, 2, 3, true); 1> ^ 1> main.cpp(54,6) : note: candidate function not viable: requires 1 argument, but 4 were provided 1> void f(Args&&..., bool) 1> ^ 1> 1 error generated.
lock_guard(MutexTypes&... m, std::adopt_lock_t t);
हालांकि, निम्नलिखित कोड बजना 3.8 के साथ (-std = C++ 1Z) संकलित नहीं किया जा सकता
क्या सी ++ विविध पैरामीटर के बाद सामान्य पैरामीटर की अनुमति देता है?
मेरा कंपाइलर क्लैंग 3.8 है। जीसीसी 6.2 भी विफल रहता है। – xmllmx
ध्यान दें कि 'lock_guard' उदाहरण के साथ, यह एक क्लास कन्स्ट्रक्टर है, इसलिए फ़ंक्शन कॉल तर्कों से उन्हें कम करने की कोशिश करने के बजाय सभी टेम्पलेट तर्क पहले से ज्ञात हैं। – BoBTFish
यह सी ++ 17 है, सी ++ 11 नहीं। – ForEveR