ラムダ式でForwardキャプチャしたい。


以下のような場合、ラムダ式でPerfect Forwardキャプチャしたいのですがうまくいきません。  
元のデータが使用できなくなってもよいのでラムダ内に完全転送したいのですが。

dataが大きなサイズのデータになり、ラムダ内で使用したら使い終わるため、  
コピーをしてラムダ内と外で2つメモリを同時に存在させたくないのが目的です。  
※ラムダの&参照は使用できません。

[code]

    struct Test
    {
      std::unique_ptr<int[]> data; // データ
      int value;
    
      Test(std::unique_ptr<int[]>&& d)
        : data(std::forward<std::unique_ptr<int[]>>(d))
        , value(10)
      {
      }
    };
    
    int main()
    {
      int size = 10;
      std::unique_ptr<int[]> data = std::make_unique<int[]>(size);
      data[0] = 123;
    
      Test sample(std::move(data));
    
      // ラムダ式
      auto func = [test_c = std::forward(sample), size] <---うまくいかない
      { 
        int sum = 0;
        for (int i = 0; i < size; i++)
        {
          sum += test_c.data[i];
        }
        return;
      };
      func();
    }
    
[/code]




[`std::forward()`](https://cpprefjp.github.io/reference/utility/forward.html)は型引数が必要です。

[code]

    auto func = [test_c = std::forward<Test>(sample), size]
    
[/code]

でどうでしょうか？




[`std::forward()`](https://cpprefjp.github.io/reference/utility/forward.html)は型引数が必要です。

[code]

    auto func = [test_c = std::forward<Test>(sample), size]
    
[/code]

でどうでしょうか？

