這是後續我剛纔討論的另一個問題boost variant simple call to common methods。增強變體訪問者預定義爲具有參數的全局lambda
由於有建議的想法,我可以做
boost::apply_visitor([](auto const& obj) { obj.some_operation(); }, variant);
我延長了想法,現在我有:
auto visitor = [](auto const& element) { return element->do_something(); };
爲全局變量和訪問過它很簡單:
boost::apply_visitor(visitor, variant);
我的問題是如何擴展這種模式,如果可能的話可以使用它接受添加的lambdas自相矛盾的論點。假設我有:
auto visitor = [](auto const& element, int a) { return element->do_something(a); };
boost::apply_visitor(<some visitor magic with passing a>, variant);
請注意,在定義lambda時沒有任何東西可以捕捉到。
我沒有看到你以前的問題,這個問題之間的區別......答案是完全相同一樣。你能幫我嗎? – Rakete1111
第一個問題是我如何將相同的代碼應用於所有類型。這個問題是關於傳遞參數。 – gsf
不是。你問在使用'boost :: apply_visitor'時如何傳遞一個額外的參數,與此處相同 – Rakete1111