C++中的[]()表示的是啥?


std::shared_ptr<ustringtools::UCollator> getUCollator()
{
    vehiclevariants::LanguageCollation languageCollation = vehiclevariants::VehicleVariants().getCollateRule();
    DLT_LOG_CXX(browserContext, DLT_LOG_INFO, "LanguageCollation id:", static_cast<int32_t>(languageCollation));
    
    std::vector<int32_t> baseOrderRules(BASE_ORDER_RULES.begin(), BASE_ORDER_RULES.end());
    baseOrderRules.insert(languageCollation == vehiclevariants::LanguageCollation::COLLATE_JAPANESE_FIRST
                                ? baseOrderRules.begin()
                                : baseOrderRules.end(),
                            JP_ORDER_RULES.begin(),
                            JP_ORDER_RULES.end());

    // Set the following group order
    static const std::vector<int32_t> REORDER_RULES(baseOrderRules.begin(), baseOrderRules.end());
    static std::once_flag flagToCreateCollatorObject;
    static auto ucollator = ustringtools::UCollator::createRuleBasedCollator(std::string(COLLATION_RULES));
    static bool SortObjectConfigured = false;
    
    std::call_once(flagToCreateCollatorObject, [](){ /* 此处使用了labma表达式 */

        if (ucollator == nullptr)
        {
            DLT_LOG_CXX(browserContext, DLT_LOG_ERROR, "ERROR! Object Collator was not created. m_ucollator = nullptr");
            return;
        }

        DLT_LOG_CXX(browserContext, DLT_LOG_INFO, "=*= Object Collator was created.");

        if ((ucollator->setReorderCodesProperty(REORDER_RULES)) != true)
        {
            DLT_LOG_CXX(browserContext, DLT_LOG_ERROR, "ERROR! Object Collator reorder group was not set");
            return;
        }

        DLT_LOG_CXX(browserContext, DLT_LOG_INFO, "=*= Reorder group was set for Object Collator.");

        // Set sorting order like "Name_99 Name_100 Name_101"
        if ((ucollator->setCollationAttribute(UCOL_NUMERIC_COLLATION, UCOL_ON)) != true)
        {
            DLT_LOG_CXX(browserContext, DLT_LOG_ERROR, "ERROR! Object Collator. Property numeric was not set");
            return;
        }

        DLT_LOG_CXX(browserContext, DLT_LOG_INFO, "=*= Object Collator was parametrizied.");
        SortObjectConfigured = true;
    });

    if (SortObjectConfigured)
    {
        return ucollator;
    }
    else
    {
        return nullptr;
    }
 }