Можно ли использовать объявления функций внутри функций?

Мы можем объявить функции внутри функций (мне нужна была локальная переменная, но она анализирует как объявление функции):

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)
}

Единственные причины, "потому что это делает синтаксический анализатор проще "и", потому что так сказано в стандарте, или это неясное применение?

19
задан R. Martinho Fernandes 5 October 2011 в 10:42
поделиться