black_wolf_ltd wrote: > Имеются ли среди вас джедаи, овладевшие дао пострения данной идиомы в > рамках стандарта, не испльзуя при этом буст ?
В рамках существующего стандарта нормальная удобная реализация typeof не
изобретена (и скорее всего невозможна). Так что либо можешь о нём
забыть, либо использовать расширения компиляторов, реализующие typeof
Здравствуйте, black_wolf_ltd, Вы писали:
__>Господа! __>Имеются ли среди вас джедаи, овладевшие дао пострения данной идиомы в рамках стандарта, не испльзуя при этом буст ?
__>Если да, то пожалуста научите Силе
__>Имеются ли среди вас ... овладевшие дао пострения данной идиомы в рамках стандарта, не испльзуя при этом буст?
Это виртуальные функции. Поведение объекта должно определятся в его методах и может изменятся в его производных классах. Языки поддерживающие typeof провоцируют написание плохо расширяемого и модифицируемого кода. В С++ можно использовать dynamic_cast, но это на крайний случай для внесения исправлений в суперкривые программы.
Здравствуйте, astral_marine, Вы писали:
__>>Имеются ли среди вас ... овладевшие дао пострения данной идиомы в рамках стандарта, не испльзуя при этом буст?
будет в следующем стандарте языка.
а пока используем g++
_>Это виртуальные функции. Поведение объекта должно определятся в его методах и может изменятся в его производных классах. Языки поддерживающие typeof провоцируют написание плохо расширяемого и модифицируемого кода. В С++ можно использовать dynamic_cast, но это на крайний случай для внесения исправлений в суперкривые программы.
Здравствуйте, astral_marine, Вы писали:
__>>Имеются ли среди вас ... овладевшие дао пострения данной идиомы в рамках стандарта, не испльзуя при этом буст? _>Это виртуальные функции. Поведение объекта должно определятся в его методах и может изменятся в его производных классах. Языки поддерживающие typeof провоцируют написание плохо расширяемого и модифицируемого кода. В С++ можно использовать dynamic_cast, но это на крайний случай для внесения исправлений в суперкривые программы.
Согласен с последним утверждением — место dynamic_cast в assert в polymorphic_downcast, и только там. (<—IMHO!)
Здравствуйте, black_wolf_ltd, Вы писали:
__>Имеются ли среди вас джедаи, овладевшие дао пострения данной идиомы в рамках стандарта, не испльзуя при этом буст ?
За что?
Если кто и придумает рабочий typeof в рамках C++03, то это будет Boost
Здравствуйте, Sm0ke, Вы писали:
S>Здравствуйте, black_wolf_ltd, Вы писали:
__>>Господа! __>>Имеются ли среди вас джедаи, овладевшие дао пострения данной идиомы в рамках стандарта, не испльзуя при этом буст ?
__>>Если да, то пожалуста научите Силе
S>А какая цель? S>Может без него можно обойтись?
А какие существуют, пусть не полностью работоспособные, реализации typeof? Какие идеи у них в основе, и если можно минимальный код — буст перелопачивать не улыбается.
— как это без typeof^H^H^H^H^H^Hdecltype?
Nemerle ?
using Nemerle.Collections;
using System.Console;
module MyApp
{
Main () : void
{
// create an array containing strings (array [string])
def elements = array ["{0}", "a {0} a", "{0}", "b {0}", "b {0}"];
def hash = Hashtable ();
// count the number of occurrences of each unique elementforeach (e in elements)
{
unless (hash.Contains (e))
hash[e] = 0;
hash[e] += 1;
}
// print each element with number indicating its total countforeach (keypair in hash) {
WriteLine (keypair.Key, keypair.Value);
}
}
}
ЗЫ Ну в самом деле. Хватит уже старичка С++ насиловать. Ну не приспособлен этот язык к таким выкрутасам. Если хочется чего-то навороченного есть языки в которых это есть.
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Пусть это будет просто:
просто, как только можно,
но не проще.
(C) А. Эйнштейн
Здравствуйте, Olegator, Вы писали:
O>А какие существуют, пусть не полностью работоспособные, реализации typeof? Какие идеи у них в основе, и если можно минимальный код — буст перелопачивать не улыбается.
Лучше ";" чтобы по аналогии с for и + не путать с оператором следования.
Для меня отсутствие foreach является одим из главных недостатков C++.
А так welcome to languages with type-inference :
D:
[d]
foreach(i;cont) ...
[/d]
или с указанием индекса i
[d]
foreach(i,elem;cont) ...
[/d]
(работает также для словарей (то что в C++ называют std::map): [d]foreach(key,value; dict) ...[/d] )
Nemerle:
[nemerle]
foreach(i in cont) ...
[nemerle]
или c лямбдой
[nemerle]
cont.Iter( i => ... )
[nemerle]
, для словарей (Hashtable)
[nemerle]
cont.Iter( (key,value) => ... )
[nemerle]
Но чтобы тип перименной можно было определить,
этот тип надо "зарегистрировать" под уникальным int'овым индексом.
Используя макрос DEF_TYPE_ID(тип, номер)
Здравствуйте, black_wolf_ltd, Вы писали:
__>Господа! __>Имеются ли среди вас джедаи, овладевшие дао пострения данной идиомы в рамках стандарта, не испльзуя при этом буст ?
__>Если да, то пожалуста научите Силе