Это не вопрос лямбда-функции, я знаю, что я могу назначить лямбда для переменной.
Какой смысл разрешить нам объявлять, но не определять функцию внутри кода?
Например:
#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 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;
}
Итак, что я хочу знать, почему С++ допускает two
, который кажется бесполезным, и three
, который кажется гораздо более сложным, но запрещает one
?
EDIT:
Из ответов видно, что там, где объявление внутри кода может предотвратить загрязнение пространства имен, то, что я надеялся услышать, является причиной того, что возможность объявлять функции разрешена, но способность определять функции была запрещена.