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

1 ответ

Размер std :: array определяется стандартом

В С ++ 11std::array определяется как непрерывное хранилище и производительность, которая не хуже массива, но я не могу решить, подразумевают ли различные требования стандарта, что std :: array имеет тот же размер и структуру памяти, что и обычный ...

1 ответ

@StoryTeller: хорошо, спасибо, прочитав эту цитату несколько раз + ваш комментарий, теперь я понимаю, что происходит. Но теперь я не могу понять логику, лежащую в основе этого: «не удается удовлетворить требования к конструктору ... constexpr, эта специализация по-прежнему остается конструктором ... constexpr». Какая? Почему?

трите на этот код: struct NonConstexpr { NonConstexpr() { } }; template <typename T> struct Bar { NonConstexpr nonConstexpr; constexpr Bar() { } }; struct Foo { Bar<void> bar; constexpr Foo() { } };Foo имеет члена,Foo::bar::nonConstexpr, который ...

1 ответ

Я не могу думать ни о каком, потому что, если мы сдерживаем обещание иметь точно такое же определение встроенной переменной с внешней связью через TU, компилятор может выбрать любой из них для ссылки на переменную, это будет то же самое технически, так как имеет только один TU и имеет глобальную переменную, объявленную в заголовке с соответствующими защитниками заголовка

отрим следующий заголовок и предположим, что он используется в нескольких TU: static int x = 0; struct A { A() { ++x; printf("%d\n", x); } };Какэтот ...

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

3 ответа

 и OP спрашивает, какой компилятор верен, а не как это исправить. Хорошим ответом было бы сообщение OP о том, верны ли clang или gcc, чего у вас нет.

отрим следующий код: template <int N, typename T> void f(T) { } template <typename T> constexpr int k(T&) { return 0; } int main() { constexpr auto i = 1; f<k(i)>([&i] { f<k(i)>(0); }); }clang++ (багажник) компилирует это.g++ (багажник) ...

2 ответа

@ Александр C: Я понимаю :) И это твои усилия: p

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

3 ответа

у вас есть новая версия GCC. Мой старше. Когда вы говорите «вероятный источник неопределенного поведения (если значение переменной используется позже)», это то же самое, что и использование его неинициализированным.

о сейчас я заметил, что следующий код можно скомпилировать с помощью clang / gcc / clang ++ / g ++, используяc99, c11, c++11 стандарты. int main(void) { int i = i; }и даже с-Wall -WextraНи один из компиляторов даже не сообщает о ...

1 ответ

 представляют начало того же хранилища. И я не понимаю, почему, если хранение подобъекта связано с хранением содержащего объекта, хранение объекта не связано с хранением его подобъекта.

ительно этого кода: #include <string> int main() { union u { u() { i = 0; } ~u() {} int i; std::string s1; std::string s2; } u; new (&u) std::string{}; }[Intro.object] / 2 [https://timsong-cpp.github.io/cppwp/n4659/intro.object#2]Говорит, ...

0 ответов

 (второе предложение). В первом случае тип существующего значения prvalue корректируется, в то время как во втором случае создается новое значение prvalue с типом, квалифицированным cv, который корректируется с помощью [expr.type] / 2, так что объект с типом cv-unqualified будет материализовано, что является дефектом.

родолжение моегопредыдущий вопрос [https://stackoverflow.com/questions/42989034/cv-qualifications-of-prvalues-in-c14] где очевидный консенсус заключался в том, что изменение в обработке cv-квалификаций prvalues ​​было довольно незначительным и ...

3 ответа

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

оложим, у меня есть два класса, которые я ожидаю, чтобы иметь точно такую ​​же структуру памяти: struct A { int x; int y; }; /* possibly more code */ struct B { int a; int b; }; Есть ли в стандарте что-нибудь, что гарантирует, что я ...

1 ответ

Что происходит, когда возникает исключение при вычислении constexpr?

При вычислении константных выражений для инициализацииconstexpr можно бросать исключения. Например, вот пример, где вычисление константного выражения защищено от переполнения: #include <iostream> #include <stdexcept> constexpr int g(int n, int ...