http://llvm.org/bugs/show_bug.cgi?id=20482

            Bug ID: 20482
           Summary: [C++11] The template parameter pack of a function
                    template should be the last template parameter
           Product: clang
           Version: trunk
          Hardware: PC
                OS: Linux
            Status: NEW
          Severity: normal
          Priority: P
         Component: C++11
          Assignee: [email protected]
          Reporter: [email protected]
                CC: [email protected], [email protected]
    Classification: Unclassified

The both sample codes below should cause compilation error but they are
compiled successfully by clang.

==============================================
template<class... T, class... U> void f() { }
==============================================

===========================================
template<class... T, class U> void g() { }
===========================================

According to C++11 standard 14.1 Template parameters [temp.param] paragraph 11,
"A template parameter pack of a function template shall not be followed by
another template parameter unless that template parameter can be deduced from
the parameter-type-list of the function template or has a default argument."

The latest draft is more clarified using the following example.

=======================================================================
// U can be neither deduced from the parameter-type-list nor specified
template<class... T, class... U> void f() { } // error
template<class... T, class U> void g() { } // error
=======================================================================

cf. http://melpon.org/wandbox/permlink/7Xl64RRorrf0L1vR

-- 
You are receiving this mail because:
You are on the CC list for the bug.
_______________________________________________
LLVMbugs mailing list
[email protected]
http://lists.cs.uiuc.edu/mailman/listinfo/llvmbugs

Reply via email to