An example of multiple inheritance in C++: a model of the lostream library
ACM SIGPLAN Notices
Structural subtyping and the notion of power type
POPL '88 Proceedings of the 15th ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Eiffel: the language
Subject-oriented programming: a critique of pure objects
OOPSLA '93 Proceedings of the eighth annual conference on Object-oriented programming systems, languages, and applications
The design and evolution of C++
The design and evolution of C++
Implementing signatures for C++
ACM Transactions on Programming Languages and Systems (TOPLAS)
Hyper/J: multi-dimensional separation of concerns for Java
Proceedings of the 22nd international conference on Software engineering
Generative programming: methods, tools, and applications
Generative programming: methods, tools, and applications
Modern C++ design: generic programming and design patterns applied
Modern C++ design: generic programming and design patterns applied
Composing crosscutting concerns using composition filters
Communications of the ACM
ACM Transactions on Software Engineering and Methodology (TOSEM)
The C++ Programming Language
C++ Templates
Mixin-Based Programming in C++
GCSE '00 Proceedings of the Second International Symposium on Generative and Component-Based Software Engineering-Revised Papers
ECOOP '01 Proceedings of the 15th European Conference on Object-Oriented Programming
Refinements and multi-dimensional separation of concerns
Proceedings of the 9th European software engineering conference held jointly with 11th ACM SIGSOFT international symposium on Foundations of software engineering
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
An extension to the subtype relationship in C++ implemented with template metaprogramming
Proceedings of the 2nd international conference on Generative programming and component engineering
IEEE Transactions on Software Engineering
A language for generic programming
A language for generic programming
Hi-index | 0.00 |
Separation of concerns and collaboration based design is usually a suitable concept for library implementation: it results in easily scalable and maintainable code. After specifying and implementing orthogonal features, we aim to easily assemble library components. In real life, components can be used only after appropriate refinement steps, progressively adding features in each step. Therefore the specific solution for a particular task can be produced by composing a set of refined components. Unfortunately, a subtype anomaly occurs in object-oriented languages between such composite components that have different numbers of features from different refinement stages. In this article we analyse this anomaly that we named chevron-shape inheritance and present a framework based on standard C++ template metaprogramming.