相关疑难解决方法(0)

使用STL算法的本地类

我一直想知道为什么你不能使用本地定义的类作为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
}
Run Code Online (Sandbox Code Playgroud)

有谁知道标准中的限制在哪里?禁止当地类型的理由是什么?


编辑:从C++ 11开始,使用本地类型作为模板参数是合法的.

c++ stl stl-algorithm

50
推荐指数
2
解决办法
5645
查看次数

标签 统计

c++ ×1

stl ×1

stl-algorithm ×1