language-lawyer

в Java невозможно создать массив универсального типа напрямую: Test<String>[] t1 = new Test<String>[10]; // Compile-time error однако, мы можем сделать это с помощью raw типа: Test<String>[] t2 = new Test[10]; // Compile warning "unchecked" в Java 8 также можно использовать ссылку на к...

учитывая эту программу C++11, должен ли я ожидать увидеть число или букву? Или не надеждами? #include <cstdint> #include <iostream> int main() { int8_t i = 65; std::cout << i; } указывает ли стандарт, может ли этот тип быть или будет символьным типом?...

этот код C99 производит неопределенное поведение? #include <stdio.h> int main() { int a[3] = {0, 0, 0}; a[a[0]] = 1; printf("a[0] = %dn", a[0]); return 0; } в заявлении a[a[0]] = 1;,a[0] читается и изменяется. Я посмотрел проект N1124 ISO / IEC 9899. Он говорит (в 6.5 выражения): между ...

рассмотрим следующую программу: extern int x; auto x = 42; int main() { } Clang 3.5 принимает его (демо), GCC 4.9 и VS2013 не делают (демо-версия для бывших). Кто прав, и где правильное поведение, указанное в стандарте C++?...

вот фрагмент кода C++, который я нашел в документации cpp.библиотека реакций: auto in = D::MakeVar(0); auto op1 = in ->* [] (int in) { int result = in /* Costly operation #1 */; return result; }; Я никогда не видел ->* [] нотации. Во-первых, я думал, что это просто опечатка, но я также нашел ...

Это продолжение этого вопроса: законно ли объявлять объект constexpr initializer_list?. начиная с C++14,std::initializer_list класс имеет все свои методы, помеченные constexpr. Кажется естественным иметь возможность инициализировать экземпляр, выполнив constexpr std::initializer_list<int> list = {1, 2...

начиная с C++14, благодаря n3781 (что само по себе не дает ответа на этот вопрос), мы можем написать следующий код: const int x = 1'234; // one thousand two hundred and thirty four цель состоит в том, чтобы улучшить такой код: const int y = 100000000; и сделать его более читабельным. подчеркивание (_) ...

во-первых, чтобы уточнить, я не про разыменование недействительного указателя! рассмотрим следующие два примера. Пример 1 typedef struct { int *p; } T; T a = { malloc(sizeof(int) }; free(a.p); // a.p is now indeterminate? T b = a; // Access through a non-character type? Пример 2 void foo(int *p) {}...

выделяет буфер через new char[sizeof(T)] гарантированно выделить память, которая правильно выровнена для типа T, где все члены T имеет свою естественную, определенную реализацию, выравнивание (то есть вы не использовали alignas ключевое слово для изменения их выравнивания). Я видел эту гарантию, сделанную в ...

хорошо ли определено поведение этого кода? #include <stdio.h> #include <stdint.h> int main(void) { void *ptr = (char *)0x01; size_t val; ptr = (char *)ptr + 1; val = (size_t)(uintptr_t)ptr; printf("%zun", val); return 0; } Я имею в виду, можем ли мы назначить какое-то...