Результаты поиска по запросу "language-lawyer"
объяснение. Я также добавил ссылку, подтверждающую ваше требование.
ец кода: struct S { int x; }; int func() { S s{2}; return (int &)s; // Equivalent to *reinterpret_cast<int *>(&s) }Я считаю, что это распространено и считается приемлемым. Стандарт гарантирует, что в структуре нет начального заполнения. Однако ...
перешел в чат
я выполняю приведение типа Base к производному типу, но базовый тип не является экземпляром производного типа, а использует только результат, если он есть, получу ли я неопределенное поведение? Трудно понять, о чем я спрашиваю? взгляните на этот ...
, Я ничего не знаю в Стандарте, который бы рассматривал сравнение значения указателя со значением другого указателя как любой вид доступа к цели указателя, за исключением узкого случая, когда указатель нацелен на самого себя.
оложим, у нас есть объявление функции, для которого у нас нет доступа к ее определению: void f(int * restrict p, int * restrict q, int * restrict r);Поскольку мы не знаем, как получить доступ к указателям, мы не можем знать, вызовет ли ...
Спасибо за ответ. Я обновил свой вопрос, чтобы уточнить, что именно я ищу.
.cppreference.com/w/cpp/language/initializationНеупорядоченная динамическая инициализация, которая [http://en.cppreference.com/w/cpp/language/initialization]: [Так в оригинале] применяется только к (статическим / локально-локальным) шаблонам ...
является constexpr и тривиально копировать конструктивно.
дующем примере я могу получить доступ кconstexpr переменнаяx изнутри лямбдаy без явного захвата. Это невозможно, еслиx не объявлен какconstexpr. Существуют ли специальные правила, которые применяются кconstexpr для захвата? int foo(auto l) { // ...
представляет собой использование.
е говоря, считается ли следующий код неопределенным поведением? int main() { int *p = <some invalid pointer value>; }Для примера компиляции возьмите следующий код: int main() { int *p = new int; delete p; // Now p has an invalid pointer ...
Случай, когда аргумент constexpr no-arg c-tor для этого литерального типа выполняет свою работу. Но это не работает, и GCC требует инициализатора
#include <complex> struct S { static std::complex<double> constexpr c; }; енерирует ошибку, потому что инициализатор отсутствует. Clang и MSVC не генерируют ошибку. Насколько я знаю, член статических данных constexpr должен иметь ...
И обратите внимание, что это правило, которое самая последняя версия MSVC по-прежнему не применяет даже при установленном стандарте последней.
ал со SFINAE и обнаружил поведение, которое не могу объяснить. Этоткомпилирует нормально [https://ideone.com/HDlWP7]: template<typename Integer, std::enable_if_t<std::is_integral<Integer>::value>* = nullptr> void foo(Integer) {} ...
, gcc и clang следует рассматривать как обработку диалекта C, в котором эффективные типы, когда они установлены, становятся постоянными. Они не могут надежно распознать все случаи, когда эффективные типы могут быть изменены, и логика, необходимая для обработки, которая могла бы легко и эффективно обрабатывать многие случаи, о которых авторы gcc уже давно заявляли, не может быть обработана без потрошения оптимизации.
оложим, у меня есть кусок динамически распределенных данных: void* allocate (size_t n) { void* foo = malloc(n); ... return foo; }Я хочу использовать данные, на которые указываетfoo как особый тип,type_t, Но я хочу сделать это позже, а не во ...
Это красная сельдь. Вопрос явно связан с глобальным пространством имен (только).
вопрос является дополнительным вопросомэтот [https://stackoverflow.com/q/50898508/5376789]. Рассмотрим следующую программу: #include <cmath> // meaningless, only for language-lawyer purpose void abs(void*) {} int main(){ abs(nullptr); }Эта ...