Esta pregunta se inspira en el following solution a la herencia múltiple sobrecarga pseudo-ambigüedad, que es una buena manera de poner en práctica los visitantes lambda de impulso :: variante como se propone en this answer:mediante declaración en la plantilla variadic
que quiero hacer algo así como lo siguiente:
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)... { }
};
no estoy seguro de lo que sería la sintaxis correcta de añadir cláusulas que utilizan para las listas de tipo empaquetados. La cláusula using
es crucial para evitar que el compilador se queje de que el operator()
es ambiguo, lo que no es cierto, porque tienen todas las firmas diferentes.
hay un "paquete de expansión en el uso de declaraciones-" [P0195R2] (http://wg21.link/p0195r2) propuesta. – Orient
La expansión del paquete de parámetros en el contexto de una declaración 'using' está en el estándar C++ 17. – ThomasMcLeod