На главную Наши проекты:
Журнал   ·   Discuz!ML   ·   Wiki   ·   DRKB   ·   Помощь проекту
ПРАВИЛА FAQ Помощь Участники Календарь Избранное RSS
msm.ru
! Правила раздела:
1. Название темы - краткое описание кто/что против кого/чего
2. В первом сообщении - список параметров, по которым идет сравнение.
3. Старайтесь аргументировать свои высказывания. Фразы типа "Венда/Слюникс - ацтой" считаются флудом.
4. Давайте жить дружно и не доводить обсуждение до маразма и личных оскорблений.
Модераторы: Модераторы, Комодераторы
Страницы: (495) « Первая ... 410 411 [412] 413 414 ...  494 495  ( Перейти к последнему сообщению )  
> Delphi vs C++ vs C# , ну и Java немножко, где-то ближе к старшему байту номеров страниц
    Повстанець, по стандарту ты не должен добавлять ничего в std. Как трактуется этот конкретный случай - не помню.
      Цитата D_KEY @
      Повстанець, по стандарту ты не должен добавлять ничего в std. Как трактуется этот конкретный случай - не помню.
      Не должен и не могу -- разные вещи. Технически ничто не мешает.
        Цитата Повстанець @
        Цитата D_KEY @
        Повстанець, по стандарту ты не должен добавлять ничего в std. Как трактуется этот конкретный случай - не помню.
        Не должен и не могу -- разные вещи. Технически ничто не мешает.

        :D
          Цитата D_KEY @
          Повстанець, по стандарту ты не должен добавлять ничего в std. Как трактуется этот конкретный случай - не помню.

          Повстанець всё сделал законно :) Он ничего в std не добавляет, он специализирует :) Это разрешено, как разрешено специализировать std::swap :)
            Цитата MyNameIsIgor @
            Цитата D_KEY @
            Повстанець, по стандарту ты не должен добавлять ничего в std. Как трактуется этот конкретный случай - не помню.

            Повстанець всё сделал законно :) Он ничего в std не добавляет, он специализирует :) Это разрешено, как разрешено специализировать std::swap :)

            Цитата 17.6.4.2.1

            1 ... A program may add a template specialization
            for any standard library template to namespace std only if the declaration depends on a user-defined type
            and the specialization meets the standard library requirements for the original template and is not explicitly
            prohibited


            2 The behavior of a C++ program is undefined if it declares
            — an explicit specialization of any member function of a standard library class template, or
            — an explicit specialization of any member function template of a standard library class or class template,
            or
            — an explicit or partial specialization of any member class template of a standard library class or class
            template.


            И даже в старом:
            Цитата 17.4.3.1/1
            Such a specialization (complete or partial) of a standard
            library template results in undefined behavior unless the declaration depends on a user-defined name of
            external linkage and unless the specialization meets the standard library requirements for the original tem-
            plate
              D_KEY, мда, не подумал про user-defined :)
                Допустим у нас есть пара типов (классов) A и B, как бы вы на топиковых языках реализовали тип (класс) C = A or B? Т.е.
                ExpandedWrap disabled
                  type A
                  type B
                  type C = A or B
                  var x : C
                  x = new A -- ok
                  x = new B -- ok
                  А разве A и B не могут тупо наследоваться от C?
                    Цитата Мяут-Настоящий @
                    А разве A и B не могут тупо наследоваться от C?

                    Могут, если мы можем им это прописать, но ведь можем и не мочь =)
                      Цитата korvin @
                      Допустим у нас есть пара типов (классов) A и B, как бы вы на топиковых языках реализовали тип (класс) C = A or B?

                      Не хватает требований, но на первый взгляд boost::variant
                      Сообщение отредактировано: MyNameIsIgor -
                        Цитата MyNameIsIgor @
                        Не хватает требований, но на первый взгляд boost::variant

                        Эм... каких требований не хватает? Определение C = A or B вроде вполне однозначно. Впрочем если есть какие-то конкретные вопросы -- задавай. И пример с буст-вариантом неплохо бы увидеть, что ты имел в виду =)

                        А так предложение Мяута годится для случая, если A и B -- наши классы и мы можем добавить им в предки класс C.
                          Ну пока я вижу два варианта:
                          С - некоторый контейнер, который может хранить различные сущности (например для передачи по сети) - в этом случае годится любой вариант с Variant-типом (простите за тавтологию :) )
                          A и B - очень похожие сущности, но тогда им бог велел от общего класса наследоваться
                            Цитата korvin @
                            Эм... каких требований не хватает? Определение C = A or B вроде вполне однозначно. Впрочем если есть какие-то конкретные вопросы -- задавай.

                            Ну, например, если имеем
                            ExpandedWrap disabled
                              foo(a : A)

                            и мы сделали
                            ExpandedWrap disabled
                              var x : C
                              x = new B

                            то как должен вести себя
                            ExpandedWrap disabled
                              foo(x)

                            ?
                            Цитата korvin @
                            И пример с буст-вариантом неплохо бы увидеть, что ты имел в виду =)

                            Ну, чуть освобожусь - напишу что-нибудь... А что, кстати, надо? :)
                            А пока можно доку посмотреть.
                            Цитата korvin @
                            А так предложение Мяута годится для случая, если A и B -- наши классы и мы можем добавить им в предки класс C.

                            Кто бы спорил... Тут, imho, всё зависит от требований, в том числе желаемого синтаксиса.
                            Сообщение отредактировано: MyNameIsIgor -
                              Ну вариантов много. Собственно, все то, что может каким-то образом заменить алгебраические типы данных.
                              union, union с тэгом, boost::variant, свой волосепедный variant через union и фичи нового стандарта, наследование...
                                void*

                                :D
                                1 пользователей читают эту тему (1 гостей и 0 скрытых пользователей)
                                0 пользователей:
                                Страницы: (495) « Первая ... 410 411 [412] 413 414 ...  494 495


                                Рейтинг@Mail.ru
                                [ Script execution time: 0.5425 ]   [ 14 queries used ]   [ Generated: 30.07.26, 00:10 GMT ]