Мы можем объявить функции внутри функций (мне нужна была локальная переменная, но она анализирует как объявление функции):
struct bvalue;
struct bdict {
bdict(bvalue);
}
struct bvalue {
explict operator bdict() const;
}
struct metainfo {
metainfo(bdict);
}
void foo(bvalue v) {
metainfo mi(bdict(v)); // parses as function declaration
metainfo mi = bdict(v); // workaround
// (this workaround doesn't work in the presence of explicit ctors)
}
Единственные причины, "потому что это делает синтаксический анализатор проще "и", потому что так сказано в стандарте, или это неясное применение?