Можно ли жить без препроцессор директив условной компиляции (вроде #if)?
Предположим, что язык о котором идет речь снабжен мощной микросистемой работающей на синтаксическом уровне (т.е. макросами Немерла, или если хотите Лиспа).
Другими словами в языке возможна условная компиляция на основе применения атрибутов и специальных макросов.
Разница с перпроцессорными аналогами заключается только в том, что макросы не могут "рвать" синтаксис. Например, мы не сможем сделать нечто вроде:
#if XXX
class
#else
struct
#endif
MyType
{
}
Но сможет сделать нечто вроде:
[if(XXX)]
class MyType
{
}
[if(!XXX)]
struct MyType
{
}
Откровенно говоря мне всегда не нравился препроцессор. Вот думаю реально ли отказаться от него полностью?