Кресты / Говнокод #18082 Ссылка на оригинал

0

  1. 1
https://ideone.com/xM1uqd

Запостил: Bobik Bobik, (Updated )

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

  • Крутейшие шаблоны, и, по-прежнему, пятиэтажные макросы. Как можно так жить?
    Ответить
  • Имхо, проще через typeid сделать. Один фиг для отладки же?

    P.S. Там правда RTTI должно быть включено и кокомпиляторозависимый костыль для гцц строчек на 5 придётся написать.
    Ответить
  • Смотрю и плачу. Просто добавить в этот ёбаный язык возможность обращаться к информации о типе как к константе времени компиляции - и код становится простой и понятный. Но нет, нести свой крест не должно быть слишком легко.
    Ответить
    • > возможность обращаться к информации о типе как к константе времени компиляции
      Возможность обращаться то добавили (typeid()), вот только информации там кот наплакал.
      Ответить
      • То есть нельзя узнать, является ли тип функцией, и если да, то какие у неё аргументы и тип возвращаемого значения?
        То есть нельзя узнать, является ли тип структурой, и если да, то какие у неё есть поля и методы и базы и какие у них модификаторы доступа?
        Ну какого хуя?
        Ответить
      • >>typeid()

        и выдает он номерок, по которому можно узнать только одного ли типа 2 хреновины?
        типа
        if(typeid(хрень) == typeid(другаяХрень))...
        ?
        Ответить
        • Там еще typeid(хрень).name() можно посмотреть. Но в gcc оно страшное, и надо вызывать функцию, которая его расшифрует.
          Ответить
        • > if(typeid(хрень) == typeid(другаяХрень))...
          Так можно только в рамках одного модуля. Надо по rtti.name() компарить
          Ответить
          • Что имеется в виду под модулем (dll, юнит трансляции и т.п.)? А то в кресты модули пока не завезли...
            Ответить
            • so dll и иже с ними. Говорят с единицами трансляции тоже бывают казусы
              Ответить
              • > Visual Studio (C++) apparently does a string compare when you call dynamic_cast, to handle edge cases of inheriting across assembly boundaries. This makes an operation that wasn't all that fast to begin with excruciatingly slow.
                В жсс теже грабли
                Ответить
                • И да, я перепутал. Наверное...
                  Как минимум низя так:
                  &typeid(хрень) == &typeid(другаяХрень)

                  > I did find that mingw32-gcc obeys the Windows C++ ABI, where std::type_info objects aren't unique for a type across DLLs; typeid(a) == typeid(b) calls strcmp under the covers.
                  Ответить
      • > информации там кот наплакал

        Ну сколько смог...
        Ответить

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

Из-за тебя ушел bormand, guest!

    А не использовать ли нам bbcode?


    8