High-Level Nondeterministic Abstractions in C++

High-Level Nondeterministic Abstractions in C++, L. Michel, A. See, and P. Van Hentenryck.

This paper presents high-level abstractions for nondeterministic search in C++ which provide the counterpart to advanced features found in recent constraint languages. The abstractions have several benefits: they explicitly highlight the nondeterministic nature of the code, provide a natural iterative style, simplify debugging, and are efficiently implementable using macros and continuations. Their efficiency is demonstrated by comparing their performance with the C++ library Gecode, both for programming search procedures and search engines.

Although implementing continuations in C(++) with setjmp/longjmp is not new, this paper shows a nice application of the technique.