| /* Distributed under the OSI-approved BSD 3-Clause License. See accompanying |
| file LICENSE.rst or https://cmake.org/licensing for details. */ |
| #pragma once |
| |
| #if defined(NDEBUG) |
| # include <cm/utility> |
| # define CM_UNREACHABLE \ |
| do { \ |
| cm::unreachable(); \ |
| } while (false) |
| #else |
| # include <cassert> |
| # include <cstdlib> |
| # include <iostream> |
| # define CM_UNREACHABLE \ |
| do { \ |
| std::cerr << "unreachable code path at " << __FILE__ << ':' << __LINE__ \ |
| << " in " << __func__ << '\n'; \ |
| assert(false && "unreachable code path"); \ |
| std::abort(); \ |
| } while (false) |
| #endif |