要件: 複合型 'T' が与えられた場合、基本型として使用される非複合型は何ですか?
これまでのところ、私の試みはこのテンプレートエイリアスです:
template <class T>
using reduce_to_non_compound_t =
std::remove_all_extents_t<
std::remove_pointer_t<
std::remove_cvref_t < T >
> >;
例えば
// array of pointers to string
using arr_of_sp = std::string * (&)[42];
// should pass
static_assert( std::is_same_v<
std::string,
reduce_to_non_compound_t<arr_of_sp>
> )
これをテストするユースケースの数は、おそらく非常に多いでしょう。これをさらに進める前に、誰かがより良いアイデアや実装を持っているかどうか尋ねたいと思いますか?
そのようなことが論理的かどうかを尋ねています。これがユースケースの出番です。それが論理的であれば、それを書くことができます。