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

1 ответ

 объяснение. Я также добавил ссылку, подтверждающую ваше требование.

ец кода: struct S { int x; }; int func() { S s{2}; return (int &)s; // Equivalent to *reinterpret_cast<int *>(&s) }Я считаю, что это распространено и считается приемлемым. Стандарт гарантирует, что в структуре нет начального заполнения. Однако ...

2 ответа

перешел в чат

я выполняю приведение типа Base к производному типу, но базовый тип не является экземпляром производного типа, а использует только результат, если он есть, получу ли я неопределенное поведение? Трудно понять, о чем я спрашиваю? взгляните на этот ...

1 ответ

, Я ничего не знаю в Стандарте, который бы рассматривал сравнение значения указателя со значением другого указателя как любой вид доступа к цели указателя, за исключением узкого случая, когда указатель нацелен на самого себя.

оложим, у нас есть объявление функции, для которого у нас нет доступа к ее определению: void f(int * restrict p, int * restrict q, int * restrict r);Поскольку мы не знаем, как получить доступ к указателям, мы не можем знать, вызовет ли ...

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

1 ответ

Спасибо за ответ. Я обновил свой вопрос, чтобы уточнить, что именно я ищу.

.cppreference.com/w/cpp/language/initializationНеупорядоченная динамическая инициализация, которая [http://en.cppreference.com/w/cpp/language/initialization]: [Так в оригинале] применяется только к (статическим / локально-локальным) шаблонам ...

1 ответ

является constexpr и тривиально копировать конструктивно.

дующем примере я могу получить доступ кconstexpr переменнаяx изнутри лямбдаy без явного захвата. Это невозможно, еслиx не объявлен какconstexpr. Существуют ли специальные правила, которые применяются кconstexpr для захвата? int foo(auto l) { // ...

1 ответ

 представляет собой использование.

е говоря, считается ли следующий код неопределенным поведением? int main() { int *p = <some invalid pointer value>; }Для примера компиляции возьмите следующий код: int main() { int *p = new int; delete p; // Now p has an invalid pointer ...

1 ответ

Случай, когда аргумент constexpr no-arg c-tor для этого литерального типа выполняет свою работу. Но это не работает, и GCC требует инициализатора

#include <complex> struct S { static std::complex<double> constexpr c; }; енерирует ошибку, потому что инициализатор отсутствует. Clang и MSVC не генерируют ошибку. Насколько я знаю, член статических данных constexpr должен иметь ...

1 ответ

И обратите внимание, что это правило, которое самая последняя версия MSVC по-прежнему не применяет даже при установленном стандарте последней.

ал со SFINAE и обнаружил поведение, которое не могу объяснить. Этоткомпилирует нормально [https://ideone.com/HDlWP7]: template<typename Integer, std::enable_if_t<std::is_integral<Integer>::value>* = nullptr> void foo(Integer) {} ...

2 ответа

, gcc и clang следует рассматривать как обработку диалекта C, в котором эффективные типы, когда они установлены, становятся постоянными. Они не могут надежно распознать все случаи, когда эффективные типы могут быть изменены, и логика, необходимая для обработки, которая могла бы легко и эффективно обрабатывать многие случаи, о которых авторы gcc уже давно заявляли, не может быть обработана без потрошения оптимизации.

оложим, у меня есть кусок динамически распределенных данных: void* allocate (size_t n) { void* foo = malloc(n); ... return foo; }Я хочу использовать данные, на которые указываетfoo как особый тип,type_t, Но я хочу сделать это позже, а не во ...

2 ответа

Это красная сельдь. Вопрос явно связан с глобальным пространством имен (только).

вопрос является дополнительным вопросомэтот [https://stackoverflow.com/q/50898508/5376789]. Рассмотрим следующую программу: #include <cmath> // meaningless, only for language-lawyer purpose void abs(void*) {} int main(){ abs(nullptr); }Эта ...