[LLVMbugs] [Bug 7425] New: function arguments which are const references fail to compile if they have a default value which is an instantiation of a template function
    bugzilla-daemon at llvm.org 
    bugzilla-daemon at llvm.org
       
    Sat Jun 19 23:00:03 PDT 2010
    
    
  
http://llvm.org/bugs/show_bug.cgi?id=7425
           Summary: function arguments which are const references fail to
                    compile if they have a default value which is an
                    instantiation of a template function
           Product: clang
           Version: trunk
          Platform: PC
        OS/Version: Linux
            Status: NEW
          Severity: normal
          Priority: P
         Component: -New Bugs
        AssignedTo: unassignedclangbugs at nondot.org
        ReportedBy: josh.faust at gmail.com
                CC: llvmbugs at cs.uiuc.edu
llvm r106400
clang r106400
I don't know if this is valid C++ or not, but it compiles with gcc (4.4.3)
template<typename T>
void foo()
{
}
struct B
{
  template<typename T>
  B(const T&)
  {
  }
};
void bar(const B& b = foo<int>)
{
}
int main(int argc, char** argv)
{
  bar();
}
yields
test_clang.cpp:14:23: error: address of overloaded function 'foo' cannot be
converted to type 'B const'
void bar(const B& b = foo<int>)
                      ^
test_clang.cpp:14:19: note: passing argument to parameter 'b' here
void bar(const B& b = foo<int>)
                  ^
test_clang.cpp:20:3: error: no matching function for call to 'bar'
  bar();
  ^~~
test_clang.cpp:14:6: note: candidate function not viable: requires 1 argument,
but 0 were provided
void bar(const B& b = foo<int>)
     ^
2 errors generated.
Using:
void bar(B b = foo<int>);
works fine
The specific use case that fails in my codebase is with boost::function, e.g.:
void bar2(const boost::function<void()>& func = foo<int>);
-- 
Configure bugmail: http://llvm.org/bugs/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
You are on the CC list for the bug.
    
    
More information about the llvm-bugs
mailing list