1. C++ / Говнокод #27222

    +1

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    11. 11
    12. 12
    13. 13
    14. 14
    15. 15
    16. 16
    17. 17
    18. 18
    19. 19
    20. 20
    21. 21
    22. 22
    // https://quuxplusone.github.io/blog/2021/01/13/conversion-operator-lookup/
    
    struct A {
        using T = T1;
        using U = U1;
        operator U1 T1::*();
        operator U1 T2::*();
        operator U2 T1::*();
        operator U2 T2::*();
    };
    
    inline auto which(U1 T1::*) { return "gcc"; }
    inline auto which(U1 T2::*) { return "icc"; }
    inline auto which(U2 T1::*) { return "msvc"; }
    inline auto which(U2 T2::*) { return "clang"; }
    
    int main() {
        A a;
        using T = T2;
        using U = U2;
        puts(which(a.operator U T::*()));
    }

    > As of this writing (but perhaps not for very much longer!) the four mainstream compilers on Godbolt Compiler Explorer give four different answers for this simple C++ program:

    > According to the current draft standard, it sounds like the conforming answer is “they should both be looked up in the scope of A”; i.e., GCC’s answer is correct and the others are wrong in three different ways.

    Какой багор )))

    Запостил: j123123, 21 Января 2021

    Комментарии (5) RSS

    • Именно поэтому я за GCC. Недавно пробовал установить шланг, так там столько питушни... А ещё, вы не поверите, там пусть к «настоящему компилятору» захардкожен, поэтому просто скачать бинарь и течь не получится. Про майкрософт я вообще молчу, с компаниями, которые чипируют людей, я переговоров не веду и их компиляторами не компилирую.
      Ответить
    • Какая-то клинопись неизвестного ранее индейского племени, срочно нужны последователи Кнорозова
      Ответить
    • Резолвинг символа в C++ напоиинает мне вот

      Драконий покер впервые встречается нам в ''Мифических историях'' у Роберта Асприна. Позже автор пишет:

      «Наиболее сложная карточная игра для всех измерений. По существу - покер с шестью картами на руках, отличается лишь тем, что в игре применяется так называемый "условный модификатор", который меняет значение карт в зависимости от числа игроков, дня недели, ориентации игроков по сторонам света, цвета стен помещения, в котором идет игра, высшей карты, которая принесла выигрыш в предпоследней сдаче, и так далее. Словом, вы все усекли».
      Ответить
    • >others are wrong in three different ways.
      Прочёл, как 'others are wrong in three different gays.
      Ответить
    • Лялечка, не бей меня, мы с пацанами получку обмывали.
      Ответить

    Добавить комментарий