Результаты поиска по запросу "language-lawyer"

4 ответа

 (который на самом деле также восьмеричный по той же причине)

я есть следующий код - #include <stdio.h> #define LENGTH 5 int main(){ char* ch[LENGTH] = {"Zero", "One", "Two", "Three", "Four"}; char* pc; char** ppc; for(int i=0; i<LENGTH; i++){ ppc = ch+i; pc = *ppc; while(*pc != 0){ printf("%c ", *pc); pc ...

3 ответа

это означает, что OP хочет получить ответ, подкрепленный ссылками на стандарт ISO C ++. Не имеет значения, что он компилируется (на самом деле многие нарушения ODR компилируются просто отлично).

отрим этот пример изcppreference [http://en.cppreference.com/w/cpp/language/definition]: struct S { static const int x = 1; }; void f() { &S::x; } // discarded-value expression does not odr-use S::xЯ согласен, что&S::x этовыражение ...

3 ответа

 и его первый элемент является конвертируемым по указателю, даже если соответствующие указатели имеют явно выраженное представление.

чий проект стандарта N4659говорит: [http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2017/n4659.pdf] [Basic.compound] Если два объекта являются взаимозаменяемыми по указателю, то они имеют одинаковый адрес а затем отмечает, что Объект массива ...

ТОП публикаций

5 ответов

@Lundin: Сообщение отредактировано, и спасибо за обратную связь. Я уже проголосовал за ваш ответ, и ваш комментарий помог мне лучше понять обоснование этого.

етика указателей между последовательными членами одного и того же типа в структуре была обычной практикой, в то время как арифметика указателей действительна только внутри массива. В C ++ это было бы явно неопределенным поведением, потому что ...

1 ответ

 равен UB, если адрес массива и адрес его первого элемента совпадают.

ли я положитьT и завернутыйT вunion и проверять их как мне нравится? union Example { T value; struct Wrapped { T wrapped; } wrapper; }; // for simplicity T = int Example ex; ex.value = 12; cout << ex.wrapper.wrapped; // ? Стандарты C ++ 11 ...

3 ответа

 на некоторых компиляторах) не рассматривает указатели как тривиальные типы. Компиляторы не относятся к требованиям стандарта серьезно, равно как и люди, которые пишут стандарты, мечтают о другом языке и изобретают всевозможные изобретения, которые прямо противоречат основным принципам. Очевидно, что пользователи смущены и иногда плохо обращаются, когда жалуются на ошибки компилятора.

ношенииэтот вопрос и ответ [https://stackoverflow.com/questions/48058545/are-there-any-guarantees-for-unions-that-contain-a-wrapped-type-and-the-type-its/48060029#48060029] .) До стандарта C ++ 17 следующее предложение было включено ...

3 ответа

@Oliv Я подозреваю, что источником UB является не арифметика указателей, а преобразование массива в указатель, применяемое к массиву вне его времени жизни.

те рассмотрим этот пример кода: struct sso { union { struct { char* ptr; char size_r[8]; } large_str; char short_str[16]; }; const char* get_tag_ptr() const { return short_str+15; } };В[Basic.expr] ...

1 ответ

Хорошо, я понял, спасибо.

вопрос следует за этимодин [https://stackoverflow.com/questions/48188737/is-pointer-arithmetic-on-inactive-member-of-a-union-ub] Давайте рассмотрим этот пример кода: struct sso { union{ struct { char* ptr; char size_r[8]; } large_str; ...

4 ответа

 , Может случиться так, что он будет закрыт как "не исправит" или что-то еще.

отрим следующий код: public class A { public static void main(String[] args) { Runnable test1 = ((I)(new I() {}))::test; // compiles OK Runnable test2 = ((new I() {}))::test; // won't compile } interface I { private void test() {} } }Я не совсем ...

1 ответ

@ Rakete1111 - вы (и g ++) правы; Я вообще не знал об этом улучшении C ++ 17; Благодарю.

clang, похоже, не согласны с тем, должен ли этот код компилироваться или нет: #include <type_traits> template <typename Signature, int N = 0> struct MyDelegate { }; template <typename D> struct signature_traits; template <template <typename> ...