#pragma once

namespace euler {

  [[noreturn]] inline void assert_failed() {
    //TODO: log error and abort
    while (1) ;
  }

}

#define assert(cond) ((cond) ? (void)0 : ::euler::assert_failed());