[llvm-bugs] [Bug 37829] New: References to functions as non-type template args

via llvm-bugs llvm-bugs at lists.llvm.org
Mon Jun 18 01:11:41 PDT 2018


https://bugs.llvm.org/show_bug.cgi?id=37829

            Bug ID: 37829
           Summary: References to functions as non-type template args
           Product: clang
           Version: unspecified
          Hardware: PC
                OS: Linux
            Status: NEW
          Severity: enhancement
          Priority: P
         Component: C++
          Assignee: unassignedclangbugs at nondot.org
          Reporter: zhonghao at pku.org.cn
                CC: dgregor at apple.com, llvm-bugs at lists.llvm.org

Clang++ compiles the following code without any error messages:

#include <utility>
#include <iostream>

using namespace std;

template <typename _T, _T _V>
        void foo()
        {
                cout << __PRETTY_FUNCTION__ << endl;
        }

int a = 0;

int b() { cout << __PRETTY_FUNCTION__ << endl; }

int main()
{
        foo<int, 9>();
        foo<int (), b>();
}

In the contrast, gcc produces the following error message:
‘int()’ is not a valid type for a template non-type parameter foo<int (), b>();

A bug report of gcc (https://gcc.gnu.org/bugzilla/show_bug.cgi?id=6030)
discusses more details of this issue. 
Shall clang also fix the problem?

-- 
You are receiving this mail because:
You are on the CC list for the bug.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-bugs/attachments/20180618/32904277/attachment.html>


More information about the llvm-bugs mailing list