in src/vswhere.lib/InstanceSelector.cpp [213:247]
bool InstanceSelector::IsProductMatch(_In_ ISetupInstance2* pInstance) const
{
_ASSERT(pInstance);
ISetupPackageReferencePtr product;
auto hr = pInstance->GetProduct(&product);
if (FAILED(hr) || !product)
{
// Should always have a product so no match.
return false;
}
// Asterisk on command line will clear the array to find any products.
const auto products = m_args.get_Products();
if (products.empty())
{
return true;
}
const auto productId = GetId(product);
if (productId.empty())
{
return false;
}
const auto ci_equal_productId = bind(ci_equal(), productId, _1);
const auto it = find_if(products.begin(), products.end(), ci_equal_productId);
if (it == products.end())
{
return false;
}
return true;
}