Vincente Botet


Vicente J. Botet Escribá got a Masters in Computer Science from University Complutense of Madrid, Spain in 1986. He has over 25 years of experience in software engineering for fault tolerant systems, and over 15 years of C++ experience. His main research area is on language and library design, concurrent systems and parallel computing. Since January 2008, he has contributed actively to the Boost community. He is the coauthor and maintainer of Boost.Thread/Chrono/Ratio. Lastly he has presented several proposals for the C++ standard. He has just do one presentation for BoostCon 2010 on transactional memory and one for C++Now 2014 for the library Expected. He is a software engineer at Nokia France where he focus currently on the testability of very large telecom systems, in particular the eNodeB of LTE.



An Alternative Approach To Customization Points: Type Classes (2016)

The standard make use of a using declaration for some customization points as swap/begin/end and ADL. N1691 describes some of the problems raised by the current way the standard defines customization points using ADL. N4569 proposes a design that while it solves some specific requirements, doesn’t cover the problems raised by N1691. Presentation will cover an alternative design for customization points that will takes into account the following goals: 1. Avoid unpredictable and unintended overloading due to argument-dependent lookup (ADL) 2. Avoid the problem of unintended "name reservation" 3. Provides a clean way for generic libraries to supply points-of-customization for user-defined types 4. Force clients to be explicit about which customization point they want to customize 5. Force clients to be explicit about which customization point they want to use


Product Types (2016)

Product types were/are everywhere, POD, aggregates, C-arrays, `std::tuple`, `std::pair`, `std::array`. It is just cumbersome to define an access interface. A lot of libraries have provided their own macros to reflect the product parts. Structured binding (P0144) is friendly for end users and makes product types language based. Product type access (P0327) proposes a generic access to the elements of any product type and the number of elements. This interface is similar to the tuple-like access but takes in account all the types covered by Structured binding so we wouldn't need any more to make use of any macro to access any product type. This doesn't mean that the user wouldn't customize their own product types. We see product types as heterogeneous containers. Having a generic access interface opens the way to a whole set of algorithms. Product types algorithms have heterogeneous functions instead of Callables. P0017 overloaded sets helps a lot in this context. Generic lambdas do as well. P0050 Overload function is the library solution to build the overloaded set explicitly. In addition we need a way to build Product types in a generic way. P0091 helps at the user level but we need some kind of generic factory using type constructors (P0338).