//static_assert((b < 0) || (b >= sizeof(x) * CHAR_BIT), "WTF?");
return x ^ (integral(1) << b);
}
что я должен написать, чтобы статик ассерт работал? да я понимаю, что b может быть известна только в рантайме, вопрос как через статик ассерт обработать вариант когда b известно во время компиляции:
flipbit(x, b) //ладно на совести программиста
flipbit(x, 12)//пускай проверит компилятор
Стандартными средствами никак
Ну вообще если бы эта функция была бы бросающей исключения, то этого можно было добиться
исключений нет, у меня bare metall. у меня даже dso_handler и всякие atexit выпилены, для экономии
https://godbolt.org/z/Y3rzvhdcd https://gcc.gnu.org/onlinedocs/gcc/Other-Builtins.html этот интринсик есть во всех gcc, которые понимают --std=c++1z
Обсуждают сегодня