Описание тега implementation-defined-behavior

3 ответа

Почему тип boost::hana::tuple_c определяется реализацией?

Документация Boost.Hana для tuple_c состояния: Также обратите внимание, что тип объектов, возвращаемых tuple_c и эквивалентный вызов make<tuple_tag> может отличаться сопровождается следующим фрагментом: BOOST_HANA_CONSTANT_CHECK( hana::to_tupl…
9 ответов

Почему я не должен #include <bits / stdC++. H>?

Я отправил вопрос с моим кодом, чей единственный #include Директива была следующей: #include &lt;bits/stdc++.h&gt; Мой учитель сказал мне сделать это, но в разделе комментариев мне сообщили, что я не должен. Зачем?
1 ответ

Определена ли реализация, какие алгоритмы могут принимать изменчивую лямбду?

Я обнаружил здесь, что лямбды по значению. Это означает, что если алгоритм внутренне использует второй алгоритм, который принимает значение лямбды по значению, любое изменяемое состояние лямбда не будет сохранено. Я буду публиковать мой пример связа…
1 ответ

В чем разница между "неопределенным поведением" и "поведением, определяемым реализацией", или почему даже различают их?

Стандарт C (AFAIK) использует оба термина. У меня проблемы с пониманием, где разница между ними. Если у меня есть какой-либо заданный синтаксически правильный оператор C, не может быть способа, чтобы компилятор не выдавал некоторые машинные инструкц…
6 ответов

Почему присвоение значения битовому полю не возвращает это же значение?

Я видел код ниже в этом сообщении Quora: #include &lt;stdio.h&gt; struct mystruct { int enabled:1; }; int main() { struct mystruct s; s.enabled = 1; if(s.enabled == 1) printf("Is enabled\n"); // --&gt; we think this to be printed else printf("Is dis…
1 ответ

Количество бит в байте - стандарт C

Почему что-то столь же фундаментальное, как число бит в байте, поддерживается реализацией, определенной стандартом C? Есть ли примеры, где это может быть полезно? от C99, 3.6 (доступна здесь ссылка) 3,6 байт адресуемая единица хранения данных, доста…
22 фев '18 в 19:40
1 ответ

Как я могу прочитать целое число со знаком из буфера uint8_t, не вызывая поведение, не зависящее от реализации или реализации?

Вот простая функция, которая пытается прочитать общее целое число из двух дополнений из буфера с прямым порядком байтов, где мы предположим, std::is_signed_v&lt;INT_T&gt;: template&lt;typename INT_T&gt; INT_T read_big_endian(uint8_t const *data) { I…
3 ответа

Поведение, определяемое реализацией в C

Пожалуйста, не могли бы вы сообщить какой-нибудь пример поведения, определенного реализацией в C? Например, я знаю из стандарта, что "поведение, определяемое реализацией, - это распространение старшего бита, когда целое число со знаком сдвигается вп…
01 апр '20 в 17:20
0 ответов

C11, 6.6.10: IB: другие формы константных выражений: требуется дополнительная документация о соответствии

Почему (кажется, что это) обычная практика для поставщиков компиляторов C не предоставлять конечным пользователям дополнительную документацию по соответствию о поведении, определяемом реализацией, в отношении "других форм константных выражений" (C11…
0 ответов

При резервировании принудительно увеличить пропускную способность вектора на коэффициент, определенный реализацией

Итак, у меня есть класс, обертывающий вектор с инвариантом, который vec.capacity() &gt; vec.size()так что я всегда могу (временно) emplace_back еще один элемент без перераспределения. Моей первой идеей было позвонить vec.reserve(vec.size() + 1)для к…
1 ответ

Есть ли случай, когда спецификатор формата%p не будет печатать адрес в формате 0x..

В C я читаю адрес с консоли и сохраняю его в переменной. Мне нужно записать адрес в шестнадцатеричном (0x...) формате. У меня есть 2 варианта: %п %Икс Я пробовал вариант 2 (%x). И это работает по-разному на 32- и 64-битных платформах. Это привело к …
4 ответа

Определено ли поведение или реализация целочисленного переполнения со знаком неопределенного поведения?

#include &lt;limits.h&gt; int main(){ int a = UINT_MAX; return 0; } Я этот УБ или реализацию определил? Ссылки говорят, что это UB https://www.gnu.org/software/autoconf/manual/autoconf-2.63/html_node/Integer-Overflow-Basics Разрешение подписанных ц…
1 ответ

Может ли xor иметь UB/IB на C++?

Видя, что ответы на эти вопросы (этот и этот ) говорят о C, я не могу распространить эти знания на C++, так что это не дубликат, а пояснение. Обновление: я говорю только о C++. Если что-то определено в C, это не означает, что оно определено в C++ и …
1 ответ

Условное включение: числовое значение символьных констант: внутри #if/#elif и без #if/#elif: почему сопоставление определяется реализацией?

Случай A: C11, 6.6 Постоянные выражения, семантика, 5: Если плавающее выражение оценивается в среде перевода, арифметический диапазон и точность должны быть как минимум такими же большими, как если бы выражение оценивалось в среде выполнения.116) ко…
2 ответа

Преобразование в поведение подписанного типа при выходе за пределы допустимого диапазона

Преобразование целого числа в тип со знаком, когда исходное значение не может быть представлено в целевом типе, соответствует cppreference. определяется реализацией (до C++20) уникальное значение целевого типа, равное исходному значению по модулю 2^…
0 ответов

C - Чтение _Bool после его установки с помощью memset undefined, реализация определена?

Насколько я понимаю, в стандарте ISO C нет ничего, что на самом деле закрепило бы представление _Bool, но там сказано: "_Bool достаточно большой, чтобы вместить значения 0 и 1" «Когда любое скалярное значение преобразуется в _Bool, результат равен 0…
0 ответов

Может ли операция, определенная как поведение, определяемое реализацией, иметь несколько возможных вариантов выполнения?

[conv.fpint] p2 говорит Если преобразуемое значение находится в диапазоне значений, которые могут быть представлены, но значение не может быть представлено точно, это определяется реализацией выбора следующего более низкого или более высокого предст…
1 ответ

Характеристики битовых полей в C++

Читая https://en.cppreference.com/w/cpp/language/bit_field, верны ли следующие выводы? независимо от того, не имеют ли соседние битовые поля отступы между ними, определяется реализацией (это читается иначе в https://eel.is/c++draft/class.bit#:bit-fi…
0 ответов

Почему переполнение целого числа со знаком в С++ не определено, а не определено реализацией?

Из того, что я нашел в сети, переполнение целого числа со знаком не определено в С++, потому что у нас просто нет только одного представления для целых чисел со знаком. Но я не могу понять, почему это не делает его определяемым реализацией, когда ка…
1 ответ

Что такое ссылки на источники в MISRA C?

В документе MISRA C есть пояснения к «Ссылкам на источники», а также есть таблица со строками: «Не указано», «Не определено», «Определено реализацией», «Специфично для локали», «Руководство MISRA», «K&amp;R», «Koenig» и «IEC 61508» и представляет их…