17 Ocak 2017 Salı

Function Template

Giriş
Bu yöntem std::function'a göre bir daha az maliyetli.

Function Template
Şöyle yaparız.
template <typename Pred>
void delIf(Pred pred) {
  ...
}
Şöyle yaparız.
template <typename TC0, typename TC1, typename TF>
void forJoined(TC0&& c0, TC1&& c1, TF&& f)
{
    for(auto&& x : c0) f(x);
    for(auto&& x : c1) f(x);
}
Function Template + Function Signature
Şöyle yaparız. Parametre hem T hem de T& olabilir.
template<typename T> 
using func_t = void(T);

template<typename T>
void func(T& arg, func_t<T> callback) {
  callback(arg);
} 

void func1(int arg) { }
void func2(int& arg) { }

int main() {
  int x = 0;
  func(x, func1);
  func<int&>(x, func2);
}

Hiç yorum yok:

Yorum Gönder