Вопросы по теме 'language-lawyer'

Неупорядоченные вычисления значений (также известные как точки последовательности)
Извините, что снова открываю эту тему, но размышления над этой темой сами по себе начали давать мне неопределенное поведение. Хотите перейти в зону четко определенного поведения. Данный int i = 0; int v[10]; i = ++i; //Expr1 i = i++;...
3468 просмотров

Требования к типам указателей распределителя стандартной библиотеки
Я пытаюсь написать класс разреженной матрицы quadtree. Короче говоря, quadtree_matrix<T> — это либо нулевая матрица, либо четверка (ne, nw, se, sw) из quadtree_matrix<T> . В конечном итоге я хотел бы протестировать различные схемы...
400 просмотров

Java: разрешение времени компиляции и наиболее конкретный метод
Перегруженные функции compute1() , compute2() и compute5() вызывают ошибки компиляции, если вы попытаетесь использовать их ниже: package com.example.test.reflect; class JLS15Test2 { int compute1(Object o1, Integer i, Integer j) {...
227 просмотров
schedule 15.03.2023

Порядок оценки аргументов с использованием std::cout
Привет всем, сегодня я наткнулся на этот фрагмент кода, и я не понимаю, что именно происходит и, в частности, в каком порядке: Код : #include <iostream> bool foo(double & m) { m = 1.0; return true; } int main() { double...
5464 просмотров
schedule 07.04.2023

Существует ли наблюдаемая разница при использовании `unsigned long` и `unsigned int` в C (или C++), когда оба имеют ширину 32 бита?
Я использую MPC56XX (встроенные системы) с компилятором, для которого int и long имеют ширину 32 бита. В необходимом программном пакете у нас были следующие определения для 32-битных типов: typedef signed int sint32; typedef unsigned int...
1516 просмотров

Объявление друга о специализации шаблона не выполняется
Следующий код, содержащий объявление друга, не работает с указанной ошибкой (см. http://ideone.com/Kq5dy ): template<class T> void foo() {} template<typename T> class A { void foo(); friend void foo<T>(); // error:...
2182 просмотров

Что составляет неудачную инициализацию статических переменных или переменных продолжительности хранения потока в области блока?
Ответив на этот вопрос и не найдя удовлетворительного ответа в стандартной статье, я начал задаваться вопросом. В стандарте указано следующее: инициализация указанных переменных: §6.7 [stmt.dcl] p4 [...] В противном случае такая...
280 просмотров

Где стандартная формулировка, разрешающая неполные типы в объявлениях функций, но требующая полных типов в определениях функций?
Недавно я обнаружил, что типы параметров в объявлении не определяющей функции могут быть неполными. Это очень интересно. class A; class B { B(A a); // Legal! Wow! }; Тип должен быть полным только для определения: B::B(A a) {};...
723 просмотров
schedule 27.09.2023

только c++: унарный минус для 0x80000000
Этот вопрос якобы для языковых юристов. Предположим, что signed и unsigned int имеют ширину 32 бита. Как указано в проекте n3337.pdf, 5.3.1.8, (-(0x80000000u)) = 0x100000000u-0x80000000u = 0x80000000u Но не могу найти ответ на вопрос:...
659 просмотров

Каков ожидаемый результат при переопределении true на false и наоборот?
#include <iostream> #define true false #define false true int main() { std::cout << false << true; } Почему выводится «01»?
934 просмотров
schedule 05.08.2022

Где в стандарте говорится об алиасинге?
Где в стандарте С++ говорится о алиасинге? Я просмотрел ToC и не увидел упоминания слова «псевдоним». Я попытался посмотреть в правиле одного определения (3.2), и поиск «псевдоним» не дал результатов. Я в недоумении, где это может быть. Я ищу...
249 просмотров
schedule 31.03.2023

Точки последовательности при вызове функций в C и неопределенном/неуказанном поведении
Я пытаюсь определить свое понимание точек следования в C - просто хотел кое-что проверить. В настоящее время я считаю, что (1) не определено, тогда как (2) просто не определено, на основании того, что в (2) есть точки последовательности после оценки...
552 просмотров

Существуют ли какие-либо реализации языка C без дополнения до двух?
Как мы все, несомненно, знаем , стандарт ISO C ( и C ++, я думаю, хотя меня больше интересует сторона C) позволяет три основных представления чисел со знаком: дополнение до двух; дополнение; а также знак / величина. В статье Википедии...
4405 просмотров

Псевдоним T* с char* разрешен. Допускается ли и наоборот?
Примечание. Этот вопрос был переименован и сокращен, чтобы сделать его более точным и понятным. Большинство комментариев относятся к старому тексту. Согласно стандарту, объекты разных типов не могут использовать одну и ту же ячейку памяти....
3440 просмотров

Точка объявления объявления typedef/alias
Является ли следующий код действительным? struct B{ using X=int; }; struct D1:B{ using X=X; }; // (1) struct D2:B{ typedef X X; }; // (2) Я ожидаю, что точка объявления D2::X будет между двумя X в (2), но кажется, что и gcc 4.8, и clang 3.2...
178 просмотров
schedule 21.06.2023

Есть ли какие-либо неинтуитивные побочные эффекты у подобъектов-членов, наследовавших продолжительность хранения?
Раньше я этого не знал, но оказывается тот: [C++11: 3.7.5]: Продолжительность хранения подобъектов-членов, подобъектов базового класса и элементов массива равна продолжительности их полного объекта (1.8). Это означает, что x->a в...
243 просмотров
schedule 14.11.2022

Может ли компилятор исключить оценку невыполненной ветки в функции constexpr?
Пытаясь ответить на вопрос Mehrdad , я придумал небольшую функцию ниже (в действии на liveworkspace ): template <typename T, unsigned low, unsigned high> static constexpr auto highest_index_in() -> typename std::enable_if<high...
190 просмотров

оператор ++ как постфикс и префикс не работает с clang
Я попытался написать оператор, который можно использовать как префиксный, так и постфиксный оператор. #include <iostream> #include <utility> struct B { // ... }; template<typename ...T> void operator++(B, T...) { std::cout...
1008 просмотров

Перегрузка (не специализация) шаблонов в пространстве имен std
Это очень педантично, но в C++03 явно не соответствовало программе перегружать (не специализировать ) шаблонную функцию в пространстве имен std : см. упоминание о это здесь и длинное обсуждение comp.lang.c++.moderated то есть это было...
1025 просмотров
schedule 06.01.2023

Арифметика указателя через границы подобъекта
Имеет ли следующий код (который выполняет арифметические операции с указателями через границы подобъектов) четко определенное поведение для типов T , для которых он компилируется (что в C++11, не обязательно должен быть POD ) или любым его...
974 просмотров