#include #include #include #include #include #include //sum size_t sum() { return 0; } template size_t sum(First &&first, Types &&...types) { return first.size() + sum(std::forward(types)...); } //= //hassize template concept HasSize = requires (Types type) { { type.size() } -> std::same_as; }; //= //sum2 size_t sum2() { return 0; } template size_t sum2(First &&first, Types &&...types) { return first.size() + sum2(std::forward(types)...); } //= //sumfun template void fun(Types &&...obj) { sum(std::forward(obj)...); } //= //sizetypes template class SizeTypes { // ... }; //= using namespace std; //main int main() { fun(queue{}, vector{}, string{}); cout << sum2(queue{}, vector{}, string{}) << '\n'; } //=