Language-Lawyer – вопросы и ответы

129
голосов
3
ответа
В некотором исходном коде используется обозначение &(*var) где var уже является указателем, например int *var =... Есть ли разница между этими двумя обозначениями? Является var != &(*var) ?...
1 месяц назад SGarnotel
134
голоса
4
ответа
Я предпочитаю использовать IEnumerable<object> , поскольку на нем определены методы расширения LINQ, а не IEnumerable , поэтому я могу использовать, например, range.Skip(2) . Однако я также п...
1 месяц назад Lingxi
95
голосов
1
ответ
Имеет ли смысл иметь варианты одной и той же функции шаблона, которые отличаются по типу члена не-типа? template<typename T, unsigned int V> void f(unsigned int& v) { v = V; } template<...
1 месяц назад kfsone
113
голосов
2
ответа
Является ли UB возвращать структуру без ее инициализации, если только последующее использование выполняется в инструкции инициализации, как показано ниже: typedef struct { int x; } s; s callee(void...
1 месяц назад BeeOnRope
60
голосов
1
ответ
Закрывает ли fstream синхронизацию с файловой системой? Я обсуждаю это с сотрудником и нуждаюсь в определенной ссылке. Я вникаю в то, что говорит стандарт, а также в том, что происходит в Windows с...
1 месяц назад static_rtti
74
голоса
1
ответ
Рассмотрим следующий код: struct X { static const int i = 45; }; void foo() { const int* k = &X::i; } int main() { } Не открывая свой любимый компилятор, что бы вы думали, было бы результатом п...
1 месяц назад SergeyA
129
голосов
4
ответа
public class A { public static String HOST; static { HOST = ...; } } public class B { public static String URL; static{ URL = A.HOST + ...; } } Мой вопрос в том, будет ли A.HOST правильно инициализ...
1 месяц назад bydsky
61
голос
1
ответ
Это почти наверняка дубликат Is gcc неправильно не диагностирует сужение конверсий в аргументах шаблона, отличных от типа? но он не дает удовлетворительного ответа. В ответе не рассматривается вопр...
1 месяц назад user4910881
147
голосов
1
ответ
Почему бы это не было позволено: ////////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////// template<ty...
1 месяц назад David
74
голоса
1
ответ
Мне сложно понять, как этот код (пример из стандартного проекта С++ 14 [conv.lval]) вызывает поведение undefined для g(false) . Почему constexpr делает программу действительной? Кроме того, что озн...
1 месяц назад template boy
265
голосов
8
ответов
Я нашел странный кусок грамматики C++ в CodeSignal : string r, longestDigitsPrefix(string s) { for(auto const c : s) { if(isdigit(c)) r += c; else break; } return r; } Первая строка определяет stri...
1 месяц назад Harry
73
голоса
2
ответа
Я хочу переопределить оператор new чтобы иметь эту подпись: void* operator new(size_t bytes, MemoryManager* man); И класс MemoryManager выглядит следующим образом: struct MemoryManager { virtual vo...
1 месяц назад DarthRubik
-4
голоса
4
ответа
Будут ли данные в следующем выражении храниться в виде автоматического распределения памяти или распределения динамической памяти или обоих myFunction(new MyClass()); Спасибо!
1 месяц назад Anonymous Dodo
105
голосов
2
ответа
Стандарт C, который, как я знаю, использует С++ для этих вопросов, имеет следующий раздел: Когда значение целочисленного типа преобразуется в реальный плавающий тип, если преобразованное значение м...
1 месяц назад Julian Kniephoff
155
голосов
1
ответ
Я нашел проблему, которая, я думаю, связана с ошибкой в ​​GCC. В любом случае, прежде чем открывать проблему, я хотел бы быть уверен. Рассмотрим приведенный ниже код: #include<algorithm> #inc...
1 месяц назад skypjack
96
голосов
1
ответ
Рассмотрим следующий шаблон: template <typename T> void foo() { static_assert(sizeof(T) == 0, "Now what?"); } Стандарт (§7.4) гласит: [Если условие static_assert ложно], программа плохо сформ...
1 месяц назад Kristóf Marussy
136
голосов
3
ответа
7.16.1.1 2 описывает va_arg следующим образом (выделение): Если фактический следующий аргумент отсутствует или , если тип несовместим с типом фактического следующего аргумента (согласно для рекламн...
1 месяц назад MarkWeston
159
голосов
1
ответ
Я читал в С++ 17 Standard $ 8.5.7.4: Выражение E1 секвенируется перед выражением E2. для операторов сдвига. Также правило 19 правила cppreference говорит: In a shift operator expression E1<<E...
1 месяц назад mch
120
голосов
2
ответа
Но он компилируется в gcc 4.9.0. Смотрите живой пример : #include <iostream> struct A { constexpr A(): i(5) {} int&& f() { return std::move(i); } int i; } a; A&& f(A& a) {...
1 месяц назад Ayrosa
61
голос
1
ответ
^^^ ЭТОТ ВОПРОС НЕ О ТИПЕ PUNNING ^^^ Я понимаю, что объект, содержащийся в объединении, может использоваться только в том случае, если он активен, и что он активен, если он был последним членом, ч...
1 месяц назад Kyle
155
голосов
3
ответа
Согласно стандарту, в [expr.sizeof] (5.3.3.2) получаем: При применении к эталонному или ссылочному типу, результатом является размер ссылочного типа. Это, похоже, согласуется с тем, что ссылки не у...
1 месяц назад Barry
159
голосов
2
ответа
Следующий код не компилируется с Visual Studio 2013: #include <vector> struct X { X() = default; X(const X&) = delete; X& operator=(const X&) = delete; X(X&&) = delete; X&...
1 месяц назад user763305
105
голосов
4
ответа
Почему следующая компиляция без ошибки?: int main() { int x = x; //I thought this should cause an error return 0; } Где в стандартах объясняется, почему это разрешено?
1 месяц назад Abo-Mahmoud Al-Homsi
238
голосов
6
ответов
Рассмотрим следующий фрагмент кода, который я напутал после некоторого рефакторинга, когда проверил, почему сервер сборки сообщил о неисправной сборке, но в моей среде IDE было хорошо: List<Stri...
1 месяц назад Alexander Rühl
153
голоса
3
ответа
Из стандарта (4.7) это выглядит как преобразование из int в unsigned int, когда они оба используют одинаковое количество бит, чисто концептуально: Если тип назначения не указан, результирующее знач...
1 месяц назад stefano
254
голоса
3
ответа
Предположим, что я пишу std::vector<T> littleVector(1); std::vector<T> bigVector; bigVector.reserve(100); bigVector = littleVector; Знает ли стандарт, что bigVector все равно будет сохр...
1 месяц назад P45 Imminent
74
голоса
1
ответ
Вдохновленный этим отвечая на этот вопрос , я немного вникнул в стандарты C11 и C99 для использования операторов равенства в указателях (исходный вопрос касается реляционных операторов), Здесь, что...
1 месяц назад abligh
153
голоса
2
ответа
Я понимаю, что стандарт позволяет std::vector<int, A> иметь одинаковые типы итераторов для разных распределителей A . Это называется ИССЛЕДОВАНИЯ SCARY . Теперь вопрос заключается в том, разр...
1 месяц назад ybungalobill
176
голосов
1
ответ
Это поведение undefined: void feedMeValue(int x, int a) { cout << x << " " << a << endl; } int main() { int a = 2; int &ra = a; feedMeValue(ra = 3, a); // equivalent to:...
1 месяц назад bolov
61
голос
1
ответ
Пытаясь понять код, совместимый с С++ 17, меня смущает следующий код, в котором функция использует значение из аргумента типа integra_constant в конце возвращаемого типа. (пожалуйста, не стесняйтес...
1 месяц назад lec
212
голосов
2
ответа
Требуется ли стандарту C, чтобы размер массива из n элементов был в n раз больше размера элемента, либо явным выражением, либо строгим логическим выводом из его требований? Например, может ли int (...
1 месяц назад Eric Postpischil
129
голосов
1
ответ
С++ 11 представил аргументы шаблона по умолчанию для шаблонов функций. См. Также аргументы шаблона по умолчанию для шаблонов функций . Но, читая стандарт С++, я не мог н
1 месяц назад dalle
74
голоса
2
ответа
Возьмите следующий тестовый файл: #include <iostream> void foo() {} int main() { std::cout << &foo << std::endl; } GCC 4.1.2, GCC 4.8 и GCC 4.9 (С++ 03 и С++ 11) все дают след...
1 месяц назад Lightness Races in Orbit
163
голоса
2
ответа
Рассмотрим следующий надуманный пример struct A { A(int) {} A(const A&) = delete; ~A() {} }; struct B { A a[2] = {{1}, {2}}; }; int main() { B b; } Он прекрасно компилируется в clang (любая вер...
1 месяц, 1 неделя назад rustyx
104
голоса
2
ответа
В следующем примере запускается первое статическое утверждение, но не второе: #include<type_traits> struct A{ protected: ~A()=default; }; struct B:A{ //this static assertion fails static_asse...
1 месяц, 1 неделя назад Oliv
104
голоса
2
ответа
Согласно ABI , Указатель на элемент данных является смещением от базового адреса объекта класса, содержащего его... Указатель NULL представлен как -1 Однако, согласно стандарту c++ (у меня есть вер...
1 месяц, 1 неделя назад asaelr
-9
голосов
1
ответ
Позвольте нам написать программу, которая определила имя переменной как члена из двух пространств имен. namespace A { extern int a; } namespace B { extern int A::a; } Является ли A::a членом двух A...
1 месяц, 1 неделя назад St.Antario
60
голосов
1
ответ
Каким должен быть результат следующей программы? #include<iostream> int foo() { return 10; } struct foobar { static int x; static int foo() { return 11; } }; int foobar::x = foo(); int main()...
1 месяц, 1 неделя назад Eric Luo
176
голосов
2
ответа
Я нашел интересную новость с ответом std::numeric_limits<seconds>::max() 0. Ответ заключается в использовании seconds::max() или std::numeric_limits<seconds::rep>::max() вместо этого, н...
1 месяц, 1 неделя назад Bruce Adams
Чтобы , пожалуйста,
Выберите тему жалобы:

Другая проблема