Этот вопрос вдохновлен следующим решением на многократную перегрузку наследования с псевдо-двусмысленностью, что является хорошим способом внедрения лямбда-посетителей для boost:: variant, как предлагается в этот ответ:
Я хочу сделать что-то вроде следующего:
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)... { }
};
Я не уверен, что будет правильным синтаксисом добавления разделов для списков упакованных типов. Предложение using
имеет решающее значение, чтобы остановить компилятор от жалобы на то, что operator()
неоднозначны, а это совсем не так, потому что у них есть все разные подписи.