Вопросы по теме 'compiler-bug'

Каково поведение печати NULL с помощью спецификатора printf% s?
На собеседовании наткнулся на интересный вопрос: test 1: printf("test %s\n", NULL); printf("test %s\n", NULL); prints: test (null) test (null) test 2: printf("%s\n", NULL); printf("%s\n", NULL); prints Segmentation fault (core dumped) Хотя...
53052 просмотров
schedule 26.09.2021

оператор присваивания для пустого inizializer_list
Можете ли вы объяснить, как контейнеры STL обрабатывают оператор присваивания с пустым списком инициализаторов? когда я сделаю что-то вроде этого: vector<int> v; v = { }; вызываемая функция не : vector& operator=...
435 просмотров

Оценка Swift @autoclosure зависит от аннотаций типов? (ошибка компилятора?)
Сегодня я снова поигрался со Swift и нуждался в функции undefined() . В основном это функция, которая может быть любого типа, но вылетает, когда она действительно запускается / оценивается. Это полезно, если у вас еще не было времени на реализацию...
323 просмотров
schedule 16.09.2021

Переопределение универсального итератора приводит к возникновению исключения BadImageFormatException при компиляции с помощью Visual Studio 2010
tl;dr: Переопределение универсального метода итератора в сконструированном производном классе приводит к выдаче BadImageFormatException при компиляции с Visual Studio 2010 (VS2010), независимо от версии .NET (2.0, 3.0, 3.5 или 4), платформы или...
295 просмотров

Ошибка GCC? Методы связывания, точка разорванной последовательности
Некоторое время я отлаживал программу и в конце концов обнаружил, что ошибка связана с тем, что ссылка не обновляется, как я думал. Вот пример, показывающий проблему, с которой я столкнулся: #include <iostream> using namespace std;...
380 просмотров
schedule 05.04.2022

В режиме выпуска поведение кода не такое, как ожидалось
Следующий код генерирует разные результаты в режиме отладки и в режиме выпуска (с использованием Visual Studio 2008): int _tmain(int argc, _TCHAR* argv[]) { for( int i = 0; i < 17; i++ ) { int result = i * 16; if(...
10373 просмотров

Constexpr, если с условием, отличным от логического
Кажется, я нашел кое-что, в чем не согласны Clang и GCC. Вот код: int main() { if constexpr (2) {} } Это успешно компилируется с GCC 7.4.0, но не с Clang 7.0.0 с этим сообщением об ошибке: test.cpp:3:17: error: constexpr if condition...
1974 просмотров

Устранение неоднозначности перегрузки списка инициализаторов С++
У меня есть вопрос о устранении неоднозначности списка инициализаторов C++, который демонстрирует различное поведение между gcc, clang и Visual Studio. Интересно, это неопределенное поведение (неверная программа) или в одном из этих компиляторов...
160 просмотров
schedule 25.06.2022

Что особенного в R и L в препроцессоре C ++?
Я запустил следующий код через препроцессор Visual Studio 2013. Результат меня удивляет. Содержимое hello.cpp: #define A(j) #j A(A?) A(B?) A(C?) A(D?) A(E?) A(F?) A(G?) A(H?) A(I?) A(J?) A(K?) A(L?) A(M?) A(N?) A(O?) A(P?) A(Q?) A(R?) A(S?)...
2247 просмотров

Компилятор С# не распознает методы возврата доходности как похожие?
Если у меня есть два метода yield return с одинаковой сигнатурой, компилятор, похоже, не распознает их как похожие. У меня есть два метода yield return : public static IEnumerable<int> OddNumbers(int N) { for (int i =...
565 просмотров

Оператор сравнения С++ не возвращает true или false
У меня есть следующая программа int a = 216; bool* v = (bool*)((void*)&a); std::cout << (*v == true) << endl; Я ожидал, что эта программа выведет true или false, но вместо этого она выводит 216. Я скомпилировал ее с g++...
182 просмотров

Почему это компилируется? Код, кажется, нарушает ограничения на параметры типа
В следующем тесте TesterClass накладывает ограничение на связь между двумя параметрами своего типа. Метод func2(), похоже, нарушает это ограничение, и я ожидаю, что он вызовет ошибку компиляции при наборе текста где-нибудь (в определении func2 или...
414 просмотров

оператор new внутри пространства имен
namespace X { void* operator new (size_t); } выдает сообщение об ошибке как: error: ‘void* X::operator new(size_t)’ may not be declared within a namespace Это ошибка компилятора gcc ? В более старой версии gcc это работает. Любая...
5775 просмотров
schedule 14.03.2023

Нулевая инициализация POD
struct Line { Bounds bounds_; Vector origin_; uint32_t begin_; uint32_t end_; dist ascent_; dist descent_; }; который используется следующим образом: Line line...
857 просмотров

Может ли выражение throw или delete быть зависимым?
И gcc 5.0, и clang 3.6 требуют ключевого слова typename в следующем примере: template<typename T> struct B { typedef int Type; }; template<int n> struct A { typedef typename B<decltype(throw (int*)n)>::Type Throw;...
146 просмотров

Зависит ли выражение вызова функции с одним аргументом параметра шаблона, не являющимся типом, от типа?
И clang 3.6, и gcc 5.0 требуют typename в следующем примере: template<typename T> struct B { typedef int Type; }; void f(int); template<int n> struct A { typedef typename B<decltype(f(n))>::Type Type; }; Это...
115 просмотров

Почему этот код Haskell работает медленнее с -O?
Этот фрагмент кода Haskell работает намного медленнее с -O , но -O должен быть неопасно . Кто-нибудь может сказать мне, что случилось? Если это имеет значение, это попытка решить эту проблему , и он использует двоичный дерево поиска и...
3181 просмотров
schedule 26.06.2023

VS2013: ошибка компилятора с float и /EHa + /fp:strict?
Мы только что перешли с VS2010 на VS2013, и я обнаружил странную ошибку, и я думаю, что это может быть связано с компилятором. Скомпилированная с помощью командной строки cl ConsoleApplication1.cpp /EHa /fp:strict /O2 следующая программа дает:...
139 просмотров

Это Rvalue или Lvalue после приведения
Код здесь проверяет lvalue или rvalue после приведения типа: #include <stdio.h> template <typename T> T const f1(T const &t) { printf("T const \n"); return t; } template <typename T> T f1(T &t) { printf("T\n");...
414 просмотров
schedule 03.12.2022

Как переносимо сравнивать исключения std::system_error со значениями std::errc?
Насколько я понял, один из лучших способов проверки условий system_error переносимым способом — это сравнить их значение code() со значениями в перечислении std::errc . Однако, когда я пытаюсь запустить следующий код, это не работает....
687 просмотров