I wish there was an established solution for this.

Another hack. Pick your poison:

https://godbolt.org/z/a6d14b

template<class T>
constexpr bool compile_time_logic_error(T&&)
{
  throw "compile time logic error";
}

template <typename T>
ReturnType Function(T&& arg)
{
  if constexpr(condition_on_<T>) {
    // Something to do
  } else if constexpr(another_condition_on<T>) {
    // Something else to do
  } else {
    constexpr auto _ = compile_time_logic_error(arg);
  }

  // Some common processing regarding arg
  return 0;
}