我有以下功能:
template <size_t TSize>
consteval size_t indexOf(SomeEnum someEnum,
const std::array<SomeEnum, TSize> &arr) {
for (size_t i = 0; i < TSize; ++i) {
if (arr[i] == someEnum) {
return i;
}
}
// How to fail here?
return SOME_DEFAULT_WRONG_VALUE;
}
该函数应该失败而不是返回默认值,但我不能抛出异常或调用assert
。我可以在static_assert
对函数的每次调用中添加一个(使用宏会不那么可怕),但我更喜欢在函数中工作的解决方案。在这种情况下有没有办法触发编译失败?