  We introduce CASC: a new, modern, and header-only C++ library which provides
a data structure to represent arbitrary dimension abstract simplicial complexes
(ASC) with user-defined classes stored directly on the simplices at each
dimension. This is accomplished by using the latest C++ language features
including variadic template parameters introduced in C++11 and automatic
function return type deduction from C++14. Effectively CASC decouples the
representation of the topology from the interactions of user data. We present
the innovations and design principles of the data structure and related
algorithms. This includes a metadata aware decimation algorithm which is
general for collapsing simplices of any dimension. We also present an example
application of this library to represent an orientable surface mesh.
