#pragma once namespace details { template struct MetaMessage { using Type = T; }; } // namespace details template auto CreateMessageVisitor = [](auto&& f) mutable { auto expender = [f](auto&&... xs) { (... && !f(xs)); }; expender(::details::MetaMessage{}...); };