私はいつも、STLアルゴリズムの述語としてローカルに定義されたクラスを使用できないのか疑問に思っています。問題のSTLアルゴリズムでのローカルクラスの使用
:「C++標準では、引数として使用されるローカル型を禁じているため」Approaching STL algorithms, lambda, local classes and other approaches、BubbaTは言及がいるという
例コード:
int main() {
int array[] = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 };
std::vector<int> v(array, array+10);
struct even : public std::unary_function<int,bool>
{
bool operator()(int x) { return !(x % 2); }
};
std::remove_if(v.begin(), v.end(), even()); // error
}
どこで誰もが知っています標準は制限ですか?ローカルタイプを許可しない理由は何ですか?
EDIT:C++ 11ので、テンプレート引数としての局所的なタイプを使用することが合法です。
私は知っていますが、私は理由を理解できるかどうかを知りたいと思います。標準への参照がありますか? –
14.3.1.2「テンプレート型引数」を参照していますか? – greyfade
私はいくつかの情報と役に立つかもしれないリンクを追加しました。 要約すると、標準が速く進化していた場合、制限は間に合うでしょう... – Klaim