Код: Выделить всё
std::initializer_listЯ хотел упростить код, который вызывает одну и ту же функцию с другим набором или параметрами:
Код: Выделить всё
auto val = QueryRegString(HKEY_LOCAL_MACHINE, L"Windows Kits\\Installed Roots", L"KitsRoot10");
/// work with val
val = QueryRegString(HKEY_LOCAL_MACHINE, L"Windows Kits\\Installed Roots", L"KitsRoot81");
/// work with val
val = QueryRegString(HKEY_LOCAL_MACHINE, L"Microsoft SDKs\\Windows\\v7.1", L"InstallationFolder");
/// work with val
Код: Выделить всё
const auto regs[] = {
{HKEY_LOCAL_MACHINE, L"Windows Kits\\Installed Roots", L"KitsRoot10"},
{HKEY_LOCAL_MACHINE, L"Windows Kits\\Installed Roots", L"KitsRoot81"},
{HKEY_LOCAL_MACHINE, L"Microsoft SDKs\\Windows\\v7.1", L"InstallationFolder"},
};
for (const auto& reg : regs)
{
auto val = QueryRegString(std::get(reg), std::get(reg), std::get(reg));
/// work with val
}
Но это работает:
Код: Выделить всё
const auto regs = {
std::make_tuple(HKEY_LOCAL_MACHINE, L"Windows Kits\\Installed Roots", L"KitsRoot10"),
std::make_tuple(HKEY_LOCAL_MACHINE, L"Windows Kits\\Installed Roots", L"KitsRoot81"),
std::make_tuple(HKEY_LOCAL_MACHINE, L"Microsoft SDKs\\Windows\\v7.1", L"InstallationFolder"),
};
Код: Выделить всё
const auto regs = {
{HKEY_LOCAL_MACHINE, L"Windows Kits\\Installed Roots", L"KitsRoot10"},
{HKEY_LOCAL_MACHINE, L"Windows Kits\\Installed Roots", L"KitsRoot81"},
{HKEY_LOCAL_MACHINE, L"Microsoft SDKs\\Windows\\v7.1", L"InstallationFolder"},
};
for (const auto& reg : regs)
{
auto val = QueryRegString(std::get(reg), std::get(reg), std::get(reg));
/// work with val
}
Код: Выделить всё
const auto regs[] = { ... };
Подробнее здесь: https://stackoverflow.com/questions/798 ... erent-type
Мобильная версия