C++/CLI だとこんなもんかね。
using namespace System;
ref class CanDivide {
private:
int i_;
public:
CanDivide(int i) : i_(i) {}
bool evaluate(int n) { return i_ % n == 0; }
};
int main() {
const int N = 10000;
// いちいちnewしないトコがC++らしくて宜しい↓
System::Collections::Generic::List<int> primes;
primes.Add(2);
Console::Write("{0,8}", 2);
for ( int i = 3; i < N; i += 2 ) {
CanDivide pred(i); // ←ココも。
if ( !primes.Exists(
gcnew Predicate<int>(%pred, &CanDivide::evaluate)) ) {
primes.Add(i);
Console::Write("{0,8}", i);
}
}
return 0;
}