私はポインタで作られたboost :: tupleを持っています(ポインタの数はテンプレートのメタプログラミングであることがわかっていません)。例えばポインタのboost :: tupleをヌル化/クリアする
:
boost::tuple<int*, Foo*, std::string*> mytuple
0へのポインタを初期化する方法はありますか?
私のような述語を作成しようとした:
struct Nullify
{
template <class TypePtr>
void operator()(TypePtr& ptr) const
{
ptr = 0
}
};
boost::fusion::for_each(mytuple, Nullify());
しかし、私は可能であれば、私はブーストを使用したい、理想的にはerror: no matching function for call to...
を取得::なしで直接for_eachループ内のラムダ別の構造体。 (私はC++ 03を使用しています)
例:無効にする
boost::fusion::for_each(mytuple, boost::lambda::_1 = 0);
たとえば、
boost::fusion::for_each(mytuple, delete boost::lambda::_1);
あなたは(https://stackoverflow.com/questions/10766112/c11-i-can-go-from-multiple-args-to-tuple-but-can-i-go-いくつかの[テンプレートの魔法]を使用することができますタプルからマルチプルへ)タプルを「アンパック」し、各要素に対して操作を実行します。 [こちらも参照](https://stackoverflow.com/questions/7858817/unpacking-a-tuple-to-call-a-matching-function-pointer) – CoryKramer
@CoryKramer C++ 03 – Yakk
私は本当にそれを "範囲"のやり方でやりたかったのです。理想的には、for_eachループ内にboost :: lambda式(たとえば_1 = 0)を含めてできるだけ簡潔に – codeJack