Связывание структуры в визуальной студии 2017 - PullRequest
1 голос
/ 25 апреля 2020

Я знаю, что кто-то задавал похожий вопрос, но я вижу другую ошибку, когда пытаюсь использовать c ++ 17 Structure Binding в моем коде (например, для (auto [i, it] = std :: tuple {0, node.begin ()}; i

Ссылка: Использование c ++ 17 «структурированных привязок» в Visual Studio 2017

Компилятор пожаловался Ошибка языковой функции C2429 «структурированные привязки» требует флага компилятора / std : c ++ 17 '

Мой код

TreeNode* ConstructBinaryTree(const int* const intChain, size_t size)
{
    std::list<TreeNode*> nodes;

    for (auto [i, it] = std::tuple{ 0, nodes.begin() }; i < size; i++)
    {
        TreeNode* curr = (it != nodes.end())? *it : nullptr;
        TreeNode* toBeAssiged = new TreeNode(intChain[i]);
        nodes.push_back(toBeAssiged);

        if (curr)
        {
            if (curr->left)
            {
                curr->right = toBeAssiged;
                it++;
            }
            else
            {
                curr->left = toBeAssiged;
            }
        }
    }

    return (nodes.size() == 0)? nullptr : *nodes.begin();
}

Согласно https://docs.microsoft.com/en-us/cpp/overview/visual-cpp-language-conformance?view=vs-2019

Связывание структуры должно быть поддерживается после VS 2017 15,3 17

Моя версия компилятора My compiler version

...