के बाद कोड सफलतापूर्वक बजना के साथ संकलित किया गया है, लेकिन जीसीसी में विफल रहता है:जीसीसी डिफ़ॉल्ट टेम्पलेट तर्क में पैक विस्तार स्वीकार नहीं करता है
struct fn
{
template <typename ... Args>
static constexpr bool call (Args ...) { return true; }
};
template <typename ... T>
static constexpr bool f = false;
template <typename ... Ts, bool F = fn::call(f<Ts> ...)>
void hoge() {}
int main() {}
जीसीसी 5.1.0 (-Wall -Wextra -std = C++ 14 - pedantic) कहते हैं
prog.cc:10:52: error: expansion pattern 'f<Ts>' contains no argument packs
template <typename ... Ts, bool F = fn::call(f<Ts> ...)>
क्लैंग 3.6.0 और 3.5.0 कोई त्रुटि नहीं देता है।
क्या मैं और क्लैंग सी ++ नियमों का उल्लंघन कर रहा हूं या यह एक जीसीसी बग है?