Почему я не могу определить функцию внутри другой функции?
это не вопрос лямбда-функции, я знаю, что я могу назначить лямбда переменной.
какой смысл позволять нам объявлять, но не определять функцию внутри кода?
например:
#include <iostream>
int main()
{
// This is illegal
// int one(int bar) { return 13 + bar; }
// This is legal, but why would I want this?
int two(int bar);
// This gets the job done but man it's complicated
class three{
int m_iBar;
public:
three(int bar):m_iBar(13 + bar){}
operator int(){return m_iBar;}
};
std::cout << three(42) << 'n';
return 0;
}
Итак, я хочу знать, почему C++ позволяет two что кажется бесполезным, и three что кажется гораздо более сложным, но запретить one?
EDIT:
из ответов кажется, что нет объявление в коде может предотвратить загрязнение пространства имен, что я надеялся услышать, хотя именно поэтому возможность объявлять функции была разрешена, но возможность определять функции была запрещена.
Comments