#include <iostream>
#include <vector>

struct multiplo {
   int k;

   bool operator()(int n) {
      return n % k == 0;
   }
};

int busca_si(const std::vector<int>& a, auto pred) {
   for (int i = 0; i < a.size( ); ++i) {
      if (pred(a[i])) {
         return i;
      }
   }

   return -1;
}

int main( ) {
   std::vector<int> a = { 5, 1, 7, 8, 6 };

   std::cout << "Ingresa un entero k (buscaremos un multiplo de k): ";
   int k;
   std::cin >> k;

   int i = busca_si(a, multiplo(k));      // construir el objeto función y pasarlo de inmediato
   if (i == -1) {
      std::cout << "no hay\n";
   } else {
      std::cout << a[i] << " (posicion " << i << ")\n";
   }
}
