Мы можем объявлять функции внутри функций (мне нужна локальная переменная, но она анализирует как объявление функции):
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)
}
Являются единственными причинами "потому что это упрощает синтаксический анализатор" и "потому что стандарт говорит так", или есть ли неявное использование для этого?