0

このコードに問題があります:

#include <string>
#include <iostream>

struct A{
    template<class UT>
    A(UT &&s) : internal(std::forward<std::string>(s)){

    }

    std::string internal;
};

int main(){
    const std::string &s = "hello";

    A a1{ s };

    std::cout << "s = " << s << std::endl;
}

この現在の例はコンパイルされずs、非 const に変更すると文字列が移動します。

私は正常に動作する同様のコードを持っていますが、この場合、私には見えない問題があります。

4

1 に答える 1

0

転送参照を正しく使用していません。std::forward宛先タイプを指定しません。推測したテンプレートを指定します。

A(UT &&s) : internal(std::forward<UT>(s)){
于 2016-06-27T13:53:45.440 に答える