fork download
  1. #include <iostream>
  2. using namespace std;
  3.  
  4.  
  5. struct Pin {
  6. unsigned int const mask;
  7. Pin(unsigned int m) : mask (m) {};
  8. unsigned int asInput(void) {
  9. return mask;
  10. }
  11. };
  12.  
  13.  
  14. void write_config (unsigned int v) {
  15. cout << v <<endl;
  16. }
  17.  
  18. template<typename It>
  19. void setPins(It start, It end, unsigned int (Pin::*fn)(void) ) {
  20. unsigned int cfg = 0; // identity for bitwise or
  21. for (; start != end; ++start) {
  22. cfg |= ((*start).*fn)(); // need to test that, wait a minute
  23. }
  24. write_config(cfg);
  25. };
  26. int main() {
  27. Pin pins[] = {1, 2, 4};
  28. setPins(pins, pins + 3, &Pin::asInput);
  29. return 0;
  30. }
Success #stdin #stdout 0s 3096KB
stdin
Standard input is empty
stdout
7