Вопросы по теме '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 просмотров
schedule
13.11.2021
Оценка 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 просмотров
schedule
28.11.2021
Ошибка 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 просмотров
schedule
19.04.2022
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 просмотров
schedule
28.05.2022
Устранение неоднозначности перегрузки списка инициализаторов С++
У меня есть вопрос о устранении неоднозначности списка инициализаторов 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 просмотров
schedule
27.07.2022
Компилятор С# не распознает методы возврата доходности как похожие?
Если у меня есть два метода yield return с одинаковой сигнатурой, компилятор, похоже, не распознает их как похожие.
У меня есть два метода yield return :
public static IEnumerable<int> OddNumbers(int N)
{
for (int i =...
565 просмотров
schedule
12.08.2022
Оператор сравнения С++ не возвращает true или false
У меня есть следующая программа
int a = 216;
bool* v = (bool*)((void*)&a);
std::cout << (*v == true) << endl;
Я ожидал, что эта программа выведет true или false, но вместо этого она выводит 216. Я скомпилировал ее с g++...
182 просмотров
schedule
17.08.2022
Почему это компилируется? Код, кажется, нарушает ограничения на параметры типа
В следующем тесте TesterClass накладывает ограничение на связь между двумя параметрами своего типа. Метод func2(), похоже, нарушает это ограничение, и я ожидаю, что он вызовет ошибку компиляции при наборе текста где-нибудь (в определении func2 или...
414 просмотров
schedule
16.07.2023
оператор 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 просмотров
schedule
08.10.2022
Может ли выражение 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 просмотров
schedule
04.11.2022
Зависит ли выражение вызова функции с одним аргументом параметра шаблона, не являющимся типом, от типа?
И 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 просмотров
schedule
27.05.2023
Почему этот код 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 просмотров
schedule
18.10.2022
Это 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 просмотров
schedule
07.02.2023