A system of constructor classes: overloading and implicit higher-order polymorphism
FPCA '93 Proceedings of the conference on Functional programming languages and computer architecture
The design and evolution of C++
The design and evolution of C++
C++ Templates
The Lambda library: unnamed functions in C++
Software—Practice & Experience
A comparative study of language support for generic programming
OOPSLA '03 Proceedings of the 18th annual ACM SIGPLAN conference on Object-oriented programing, systems, languages, and applications
Functional programming with the FC++ library
Journal of Functional Programming
C++ Template Metaprogramming: Concepts, Tools, and Techniques from Boost and Beyond (C++ in Depth Series)
Concepts: linguistic support for generic programming in C++
Proceedings of the 21st annual ACM SIGPLAN conference on Object-oriented programming systems, languages, and applications
An extended comparative study of language support for generic programming
Journal of Functional Programming
A framework for higher-order functions in C++
COOTS'95 Proceedings of the USENIX Conference on Object-Oriented Technologies on USENIX Conference on Object-Oriented Technologies (COOTS)
A comparison of c++ concepts and haskell type classes
Proceedings of the ACM SIGPLAN workshop on Generic programming
Hi-index | 0.00 |
Higher-order functions are essential for generic programming. While they are naturally supported in functional programming languages, there are no higher-order functions in C++. There, various function datatypes exist that simulate the effect of higher-order programming in different ways - as classes designed in the imperative, object-oriented, or meta-programming spirit. With the recent addition of concepts, another alternative for supporting parameterization by functions has yet become available. No guidelines exist, however, whether, or when, to prefer a concept for functions over any of the existing function datatypes; nor have the function datatypes themselves been compared. We provide an empirical study that assesses performance, expressivity, and convenience. The study shows that the function concept mechanism is faster and at least as expressive as the best function datatype, but, due to the principal difference between concept- and type-based approaches, also less convenient to use.