3

以下が機能しない理由を誰かに説明してもらえますか(testconst中にありblubます)。testは想定していた値でコピーされるので、ファンクターローカルなので設定できました。

#include <memory>

int main()
{
    std::shared_ptr<bool> test;
    auto blub = [test]() {
        test = std::make_shared<bool>(false);
    };

    return 0;
}

これを機能させるには、まず新しいshared_ptr, assignを導入する必要がtestあり、それから通常は other を割り当てることができますshared_ptr。ところで:私はclang 3.1を使用しています

4

1 に答える 1

7

operator()ラムダのがconstデフォルトであるためです。mutable非 const にするには、キーワードを使用する必要があります。

auto blub = [test]() mutable {
    test = std::make_shared<bool>(false);
};
于 2012-06-02T21:32:45.500 に答える