inline static typename std::enable_if<ExpansionTraits<Expansion>::has_vector_S2M>::type apply(const Expansion& K, SourceIter s_begin, SourceIter s_end, ChargeIter c_begin, const typename Expansion::point_type& center, typename Expansion::multipole_type& M) { K.S2M(s_begin, s_end, c_begin, center, M); }
inline static typename std::enable_if<ExpansionTraits<Expansion>::has_scalar_S2M & !ExpansionTraits<Expansion>::has_vector_S2M>::type apply(const Expansion& K, const typename Expansion::source_type& source, const typename Expansion::charge_type& charge, const typename Expansion::point_type& center, typename Expansion::multipole_type& M) { K.S2M(source, charge, center, M); }