Tripti Joshi (Editor)

Andrei Alexandrescu

Updated on
Share on FacebookTweet on TwitterShare on LinkedInShare on Reddit
Nationality  Romanian, American
Spouse  Sanda Alexandrescu
Role  Author

Name  Andrei Alexandrescu
Books  Modern C++ Design
Andrei Alexandrescu Writing Quick Code in C Quickly GoingNative 2013

Born  1969 (age 45–46)Bucharest, Romania
Occupation  Developer of the D programming language
Known for  Expert on C++ and D programming
Education  University of Washington, Politehnica University of Bucharest
Similar People  Herb Sutter, Scott Meyers, Walter Bright, Bjarne Stroustrup, Stanley B Lippman

Cppcon 2015 andrei alexandrescu declarative control flow

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.


Andrei Alexandrescu Conversation with Andrei Alexandrescu All things D the

He became an American citizen in August 2014.

Andrei Alexandrescu Variadic Templates are Funadic GoingNative 2012 Channel 9

He is a developer of the D programming language.

Andrei Alexandrescu Interviu cu Andrei Alexandrescu unul dintre creatorii C

Cppcon 2015 andrei alexandrescu std allocator

Education and career

Andrei Alexandrescu httpsfch9msavatar10a6eb92139141af93538c

Alexandrescu received a B.S. degree in Electrical Engineering from Polytechnic University of Bucharest (Universitatea Politehnica din Bucureşti) in July 1994.

Andrei Alexandrescu DConf 2015 speaker Andrei Alexandrescu

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.

Andrei Alexandrescu All Things D programming language A Conversation with

Alexandrescu earned an M.S. (2003) and a Ph.D. (2009) in computer science from the University of Washington.

Andrei Alexandrescu The D Programming Language with Andrei Alexandrescu YouTube

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.

Alexandrescu, Herb Sutter, and Scott Meyers run C++ and Beyond, a small annual technical conference.


Expected is a template class for C++ which has been proposed for inclusion in Boost. Alexandrescu proposes Expected<T> 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 Expected<T> as:

  • Associates errors with computational goals
  • Naturally allows multiple exceptions in flight
  • Switch between error handling and exception throwing styles
  • Teleportation possible across thread boundaries, across nothrow subsystem boundaries and across time (save now, throw later)
  • Collect, group, combine exceptions
  • Example

    For example, instead of any of the following common function prototypes:

    int parseInt(const string&); // Returns 0 on error and sets errno.


    int parseInt(const string&); // Throws invalid_input or overflow

    he proposes the following:

    Expected<int> parseInt(const string&); // Returns an expected int: either an int or an exception


    Andrei Alexandrescu Wikipedia