News & Events

  • Larisse Voufo to speak at C++Now conference in Colorado on ConceptClang

    Date: 02/19/2014

    "This talk will primarily focus on illustrating how one can use ConceptClang in practice, highlighting and motivating key components of its implementation structure such as Bind^x2 and our “ structure-opening” archetypes. The audience can expect to learn how our implementation of concepts for C++ not only helps design concepts for C++, but also affects programming languages beyond C++; thereby further impressing upon the need for a full support for concepts in C++."

    ABSTRACT: Concepts are an essential feature of generic programming and have been anticipated as a language extension to C++ for over a decade. Different designs have been proposed but a consensus has not emerged for standardization. In 2010, we introduced ConceptClang as a general framework for implementing different designs for C++ concepts in Clang, with the primary purpose of aiding in understanding the design space for concepts as well as to understand general issues related to concepts that are independent of particular language designs for them. One such general issue emerged in the area of name binding, i.e., the process of matching the use of a name to the declaration to which it refers. It appears that full support for any concepts design will benefit from a new scoping rule for name binding, which we call "weak hiding." Weak hiding allows the transition from unconstrained templates to constrained templates to preserve seemingly valid programs— something that has not been previously well addressed. To implement weak hiding, we have introduced two-stage name binding (Bind^x2), which defines how existing name binding can be extended with weak hiding. Generalizing Bind^x2 from simple function calls to other kinds of name uses such as associated members (including special members), operators, and types requires a first-class implementation of archetypes—a surprising consequence of which is that open/extensible classes/structures are essentially provided for free with full C++ concepts. This talk will primarily focus on illustrating how one can use ConceptClang in practice, highlighting and motivating key components of its implementation structure such as Bind^x2 and our “ structure-opening” archetypes. The audience can expect to learn how our implementation of concepts for C++ not only helps design concepts for C++, but also affects programming languages beyond C++; thereby further impressing upon the need for a full support for concepts in C++.

 

 

----------