#include <iostream>
#include <string>
#include <tuple>
enum ConfigEntry : unsigned int {
PLAYER_NAME = 0,
CONNECTION_TIMEOUT
};
struct ResourceManager {
template<ConfigEntry E>
static const auto& get() noexcept {
return std::get<static_cast<std::size_t>(E)>(content);
}
private:
static std::tuple<std::string, int> content;
};
std::tuple<std::string, int> ResourceManager::content = {"Rambo", 100};
int main() {
std::cout << ResourceManager::get<PLAYER_NAME>() << std::endl;
std::cout << ResourceManager::get<CONNECTION_TIMEOUT>() << std::endl;
}
ICAgICNpbmNsdWRlIDxpb3N0cmVhbT4KICAgICNpbmNsdWRlIDxzdHJpbmc+CiAgICAjaW5jbHVkZSA8dHVwbGU+CiAgICAgCiAgICBlbnVtIENvbmZpZ0VudHJ5IDogdW5zaWduZWQgaW50IHsKICAgIAlQTEFZRVJfTkFNRSA9IDAsCiAgICAJQ09OTkVDVElPTl9USU1FT1VUCiAgICB9OwogICAgIAogICAgc3RydWN0IFJlc291cmNlTWFuYWdlciB7CiAgICAJdGVtcGxhdGU8Q29uZmlnRW50cnkgRT4KICAgIAlzdGF0aWMgY29uc3QgYXV0byYgZ2V0KCkgbm9leGNlcHQgewogICAgCQlyZXR1cm4gc3RkOjpnZXQ8c3RhdGljX2Nhc3Q8c3RkOjpzaXplX3Q+KEUpPihjb250ZW50KTsKICAgIAl9CiAgICAgCiAgICAJcHJpdmF0ZToKICAgIAlzdGF0aWMgc3RkOjp0dXBsZTxzdGQ6OnN0cmluZywgaW50PiBjb250ZW50OwogICAgfTsKICAgICAKICAgIHN0ZDo6dHVwbGU8c3RkOjpzdHJpbmcsIGludD4gUmVzb3VyY2VNYW5hZ2VyOjpjb250ZW50ID0geyJSYW1ibyIsIDEwMH07CiAgICAgCiAgICBpbnQgbWFpbigpIHsKICAgIAlzdGQ6OmNvdXQgPDwgUmVzb3VyY2VNYW5hZ2VyOjpnZXQ8UExBWUVSX05BTUU+KCkgPDwgc3RkOjplbmRsOwogICAgCXN0ZDo6Y291dCA8PCBSZXNvdXJjZU1hbmFnZXI6OmdldDxDT05ORUNUSU9OX1RJTUVPVVQ+KCkgPDwgc3RkOjplbmRsOwogICAgfQ==