はstd::back_insert_iterator
とvalue_type
等しいですが、基になる へのポインターを保持するメンバーvoid
も持っています。次の行に沿って、コンテナの を抽出する特性クラスを作成しようとしています。protected
container
Container
value_type
#include <iterator>
#include <type_traits>
#include <vector>
template<class OutputIt>
struct outit_vt
:
OutputIt
{
using self_type = outit_vt<OutputIt>;
using value_type = typename std::remove_pointer_t<decltype(std::declval<self_type>().container)>::value_type;
};
int main()
{
std::vector<int> v;
auto it = std::back_inserter(v);
static_assert(std::is_same<outit_vt<decltype(it)>::value_type, int>::value, "");
}
ただし、これは (多かれ少なかれ予想通り) 不完全型エラーに遭遇します。コンテナのを抽出するために、この周りにとにかくありますvalue_type
か?