Немного заслуженных поздравлений.
У меня в магистерском курсе есть задания повышенной сложности (каждый год разные). Они построены так: есть некий замороченный код, где один компилятор работает, а другой нет и надо понять и обосновать стандартом кто прав. Я в некоторые пятницы такие брейнтизеры иногда скидываю в этот канал.
И я к таким заданиям обычно добавляю: поскольку очевидно кто-то не прав, вы получите высшую оценку за экзамен автоматом, т.е. безо всякого экзамена, если вы сделаете коммит в clang или gcc (смотря кто не прав) и его примут.
Много лет этой опцией никому не удавалось воспользовался. Люди пытались, но пройти ревью и влиться не могли. Но в этом году у нас есть первый победитель.
https://github.com/llvm/llvm-project/pull/118003
Мой студент Владислав Белов @sick_hoof со второго раза влил фикс в кланг. Первый раз его влили, но там в расширенных тестах упал assert и его откатили. Тот assert оказался ошибочным и в этом патче был торжественно удалён.
Ниже некоторые тесты, которые Владислав написал на свой коммит.
Вот тут он ожидает ошибку:
А вот тут он ошибки не ожидает, это должно работать:
Я полагаю, достойные студенты растут. Боевые. Самому иногда страшно становится.
#cpp_postgraduate
У меня в магистерском курсе есть задания повышенной сложности (каждый год разные). Они построены так: есть некий замороченный код, где один компилятор работает, а другой нет и надо понять и обосновать стандартом кто прав. Я в некоторые пятницы такие брейнтизеры иногда скидываю в этот канал.
И я к таким заданиям обычно добавляю: поскольку очевидно кто-то не прав, вы получите высшую оценку за экзамен автоматом, т.е. безо всякого экзамена, если вы сделаете коммит в clang или gcc (смотря кто не прав) и его примут.
Много лет этой опцией никому не удавалось воспользовался. Люди пытались, но пройти ревью и влиться не могли. Но в этом году у нас есть первый победитель.
https://github.com/llvm/llvm-project/pull/118003
Мой студент Владислав Белов @sick_hoof со второго раза влил фикс в кланг. Первый раз его влили, но там в расширенных тестах упал assert и его откатили. Тот assert оказался ошибочным и в этом патче был торжественно удалён.
Ниже некоторые тесты, которые Владислав написал на свой коммит.
Вот тут он ожидает ошибку:
template<typename T> struct A {
typedef int M;
struct B {
typedef void M;
struct C;
struct D;
};
};
template<typename T> struct A<T>::B::D : A<T*> {
M m;
// expected-error@-1 {{field has incomplete type 'M' (aka 'void'}}
};
А вот тут он ошибки не ожидает, это должно работать:
template<typename T> struct G {
struct B {
typedef int M;
struct C {
typedef void M;
struct D;
};
};
};
template<typename T> struct G<T>::B::C::D : B {
M m;
};
Я полагаю, достойные студенты растут. Боевые. Самому иногда страшно становится.
#cpp_postgraduate