Вопросы по теме 'language-lawyer'
Неупорядоченные вычисления значений (также известные как точки последовательности)
Извините, что снова открываю эту тему, но размышления над этой темой сами по себе начали давать мне неопределенное поведение. Хотите перейти в зону четко определенного поведения.
Данный
int i = 0;
int v[10];
i = ++i; //Expr1
i = i++;...
3468 просмотров
schedule
03.07.2023
Требования к типам указателей распределителя стандартной библиотеки
Я пытаюсь написать класс разреженной матрицы quadtree. Короче говоря, quadtree_matrix<T> — это либо нулевая матрица, либо четверка (ne, nw, se, sw) из quadtree_matrix<T> .
В конечном итоге я хотел бы протестировать различные схемы...
400 просмотров
schedule
13.01.2023
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 просмотров
schedule
11.04.2022
Объявление друга о специализации шаблона не выполняется
Следующий код, содержащий объявление друга, не работает с указанной ошибкой (см. http://ideone.com/Kq5dy ):
template<class T> void foo() {}
template<typename T>
class A {
void foo();
friend void foo<T>(); // error:...
2182 просмотров
schedule
05.10.2022
Что составляет неудачную инициализацию статических переменных или переменных продолжительности хранения потока в области блока?
Ответив на этот вопрос и не найдя удовлетворительного ответа в стандартной статье, я начал задаваться вопросом. В стандарте указано следующее: инициализация указанных переменных:
§6.7 [stmt.dcl] p4
[...] В противном случае такая...
280 просмотров
schedule
05.06.2024
Где стандартная формулировка, разрешающая неполные типы в объявлениях функций, но требующая полных типов в определениях функций?
Недавно я обнаружил, что типы параметров в объявлении не определяющей функции могут быть неполными. Это очень интересно.
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 просмотров
schedule
25.06.2023
Каков ожидаемый результат при переопределении 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 просмотров
schedule
05.02.2023
Существуют ли какие-либо реализации языка C без дополнения до двух?
Как мы все, несомненно, знаем , стандарт ISO C ( и C ++, я думаю, хотя меня больше интересует сторона C) позволяет три основных представления чисел со знаком:
дополнение до двух;
дополнение; а также
знак / величина.
В статье Википедии...
4405 просмотров
schedule
27.03.2023
Псевдоним T* с char* разрешен. Допускается ли и наоборот?
Примечание. Этот вопрос был переименован и сокращен, чтобы сделать его более точным и понятным. Большинство комментариев относятся к старому тексту.
Согласно стандарту, объекты разных типов не могут использовать одну и ту же ячейку памяти....
3440 просмотров
schedule
26.05.2022
Точка объявления объявления 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 просмотров
schedule
25.02.2023
оператор ++ как постфикс и префикс не работает с clang
Я попытался написать оператор, который можно использовать как префиксный, так и постфиксный оператор.
#include <iostream>
#include <utility>
struct B {
// ...
};
template<typename ...T>
void operator++(B, T...) {
std::cout...
1008 просмотров
schedule
03.08.2022
Перегрузка (не специализация) шаблонов в пространстве имен std
Это очень педантично, но в C++03 явно не соответствовало программе перегружать (не специализировать ) шаблонную функцию в пространстве имен std : см. упоминание о это здесь и длинное обсуждение comp.lang.c++.moderated
то есть это было...
1025 просмотров
schedule
06.01.2023
Арифметика указателя через границы подобъекта
Имеет ли следующий код (который выполняет арифметические операции с указателями через границы подобъектов) четко определенное поведение для типов T , для которых он компилируется (что в C++11, не обязательно должен быть POD ) или любым его...
974 просмотров
schedule
01.07.2023