Andrei Alexandrescu

Andrei Alexandrescu (born 1969) is a Romanian-American C++ and D language programmer and author. He is particularly known for his pioneering work on policy-based design implemented via template metaprogramming. These ideas are articulated in his book "Modern C++ Design" and were first implemented in his programming library, Loki. He also implemented the "move constructors" concept in his MOJO library. He contributed to the "C/C++ Users Journal" under the byline "Generic<Programming>". Alexandrescu worked as a research scientist at Facebook, before departing the company in August 2015 in order to focus on developing the D programming language.
He became an American citizen in August 2014.
Education and career.
Alexandrescu received a B.S. degree in Electrical Engineering from Polytechnic University of Bucharest ("Universitatea Politehnica din București") in July 1994.
His first article was published in the "C/C++ Users Journal" in September 1998. He was a program manager for Netzip, Inc. from April 1999 until February 2000. When the company was acquired by RealNetworks, Inc., he served there as a development manager from February 2000 through September 2001.
Alexandrescu earned an M.S. (2003) and a Ph.D. (2009) in computer science from the University of Washington.
More recently, he has been assisting Walter Bright in the development of the D programming language. Alexandrescu released a book titled "The D Programming Language" in May 2010.
From 2010 to 2014, Alexandrescu, Herb Sutter, and Scott Meyers ran a small annual technical conference called "C++ and Beyond".
Contributions.
Expected.
Expected is a template class for C++ which is on the C++ Standards track. Alexandrescu proposes codice_1 as a class for use as a return value which contains either a T or the exception preventing its creation, which is an improvement over use of either return codes or exceptions exclusively. Expected can be thought of as a restriction of sum (union) types or algebraic datatypes in various languages, e.g., Hope, or the more recent Haskell and Gallina; or of the error handling mechanism of Google's Go, or the Result type in Rust.
He explains the benefits of codice_1 as:
Example.
For example, instead of any of the following common function prototypes:
codice_3
or
codice_4
he proposes the following:
codice_5
Scope guard.
From 2000 onwards, Alexandrescu has advocated and popularized the scope guard idiom. He has introduced it as a language construct in D. It has been implemented by others in many other languages.