This is the mail archive of the gcc-bugs@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

[Bug c++/36843] Not able to declare a function using function type template parameter



------- Comment #1 from schaub-johannes at web dot de  2008-07-15 20:43 -------
(In reply to comment #0)
> When you pass a function-type to a template as a type-parameter, you cannot use
> that type to declare member functions (in class templates), or to declare free
> functions (in function templates). This looks strange to me. comeau allows to
> do this.
> 
> Testcase with class template:
> 
> template<typename T> struct bar { T foo; }; 
> int main() { Bar<void()> k; }
> 
> output: 
> report.cpp: In instantiation of 'Bar<void ()()>':
> report.cpp:1:   instantiated from here
> report.cpp:1: error: field 'Bar<void ()()>::p' invalidly declared function type
> 
> 
> Testcase with function template:
> 
> template<typename T> void foo() { T bar; }  
> int main() { foo<void()>(); }
> 
> report.cpp: In function »void foo() [with T = void ()()]«:
> report.cpp:1:   instantiated from here
> report.cpp:1: Fehler: Variable »bar« hat Funktionstyp
> 

I'm sorry for the german output message in the second testcase. i forgot to
change language:

report.cpp: In function 'void foo() [with T = void ()()]':
report.cpp:1:   instantiated from here
report.cpp:1: error: variable 'bar' has function type


-- 


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=36843


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]