我一直想知道为什么不能使用本地定义的类作为 STL 算法的谓词。
在问题中:接近 STL 算法、lambda、本地类和其他方法,BubbaT 提到说“由于 C++ 标准禁止将本地类型用作参数”
示例代码:
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
}
有谁知道标准中的限制在哪里?禁止本地类型的理由是什么?
编辑:从 C++11 开始,使用本地类型作为模板参数是合法的。