To pytanie jest inspirowana w following solution do wielokrotnego dziedziczenia przeciążenia pseudo-dwuznaczności, co jest miłym sposobem wdrożenia odwiedzających lambda dla boost :: wariant zaproponowany w this answer:użyciu deklaracja zmiennej liczbie argumentów szablonu
chcę zrobić coś podobnego do następującego:
template <typename ReturnType, typename... Lambdas>
struct lambda_visitor : public boost::static_visitor<ReturnType>, public Lambdas... {
using Lambdas...::operator(); //<--- doesn't seem to work
lambda_visitor(Lambdas... lambdas) : boost::static_visitor<ReturnType>() , Lambdas(lambdas)... { }
};
Nie jestem pewien, jaka byłaby właściwa składnia dodawania klauzul wykorzystujących do list typu spakowanego. Klauzula using
ma kluczowe znaczenie, aby powstrzymać kompilator od narzekania, że operator()
są niejednoznaczne, co w zupełności nie jest, ponieważ mają one wszystkie różne sygnatury.
istnieje "ekspansje zapakować using-deklaracji" [P0195R2] (http://wg21.link/p0195r2) wniosku. – Orient
Rozszerzenie pakietu parametrów w kontekście deklaracji "using" znajduje się w standardzie C++ 17. – ThomasMcLeod