一部のレガシー コードは次のようになります。
#include <boost/array.hpp>
boost::array<wchar_t, 1000> data;
void func(std::wstring &str)
{
str.assign(data.begin());
}
std
C++ 17 に更新するときに同等のものを使用するようにコードを更新しています。直接の置き換えboost
だと思っていarray
ましたが、これを試すとコンパイル エラーが発生します。
#include <array>
std::array<wchar_t, 1000> data;
void func(std::wstring &str)
{
str.assign(data.begin());
}
エラー C2664: 'std::basic_string<wchar_t,std::char_traits<wchar_t>,std::allocator<wchar_t>> &std::basic_string<wchar_t,std::char_traits<wchar_t>,std::allocator<wchar_t>> ::assign(std::initializer_list<_Elem>)': [ _Elem=wchar_t ] および [ _Ty= を使用して、引数 1 を 'std::_Array_iterator<_Ty,2001>' から 'std::initializer_list<_Elem>' に変換できませんwchar_t ] および [ _Elem=wchar_t ]
コードベースのかなりの場所でこのパターンを使用していますが、些細な修正はありますか? boost::array
具体的にはとwhichの違いは何ですか?std::array
これは、ドロップイン交換とは見なされないことを意味しますか?
(私がこのコードを書いたわけではありません。また、なぜ単に を使用しないのかわかりませんwchar_t[]
。おそらく、作成者はブーストの「新しい」機能が気に入っただけです。)