私は<utility>
をソースファイルに含めました。その後、std::exchange
を使用しましたが、コンパイラはネームスペースstdにexchange
が見つかりませんでした。私はusr/include/utility
を見て、exchange
を検索すると実装が見つかりました。それはnamespace std
ブロックの中にあります。コードをコンパイルするには、std::exchange
からstd::
を削除しなければなりませんでした。私のstd :: exchangeは名前空間stdにありませんか?
これを解決できますか?
どうすれば私のコードを移植可能にすることができますか?
注:AndroidのTermux Linuxエミュレータのclangを使用しています。私はapt
でそれをインストールしてclangを得ました。
あなたは 'C++ 14'を可能にしましたか? 'clang -std = C++ 14'? – Holt
@Holt私はC++ 11を使用しています...私はそれを変更しようとします。私が言ったように、 'std ::'なしで、それは動作します。 – user6245072
['cppreference'](http://en.cppreference.com/w/cpp/utility/exchange)によると' std :: exchange'はC++ 14の関数です。 clangがその前にそれを定義するだけの純粋な偶然の一致かもしれません。 – Holt