Why do I need to specify using in the below example?
If not specified, there would be an ambiguous call to operator()
template <typename ... T>
struct C : T ... {
// not having this using...
// would emit a compiler error
// like member 'operator()' is ambiguous
//using T::operator()...;
};
// template class guidance feature of C++17
template <typename ... T>
C(T...) -> C<T...>;
int main(){
C c { []{}, [](int){} };
c(3);
}