#include #include #include namespace std { template class initializer_list {}; template class vector {}; class string {}; } class InitListService { public: void consume(std::initializer_list values) {} void consume(int value) {} void consumeVector(std::vector values) {} void consumeVector(int value) {} void consumeScalarOrVector(std::vector values) {} void consumeScalarOrVector(int value) {} void consumeStringVectorMismatch(std::vector values) {} void consumeStringVectorMismatch(std::string value) {} void consumeMixed(std::initializer_list values) {} void consumeMixed(std::initializer_list values) {} void consumeEmpty(std::initializer_list values) {} void consumeEmpty(std::initializer_list values) {} void consumeSingleMixed(std::initializer_list values) {} void consumeSingleEmpty(std::initializer_list values) {} void callHomogeneousInitList() { consume({1, 2, 3}); } void callHomogeneousVector() { consumeVector({1, 2, 3}); } void callSingleElementScalar() { consumeScalarOrVector({5}); } void callStringVectorMismatch() { consumeStringVectorMismatch({"a", "b"}); } void callHeterogeneousInitList() { consumeMixed({1, 2.0}); } void callEmptyInitList() { consumeEmpty({}); } void callSingleHeterogeneousInitList() { consumeSingleMixed({1, 2.0}); } void callSingleEmptyInitList() { consumeSingleEmpty({}); } };