PrevUpHomeNext

utx::bare_t


utx::bare_t

utx::bare_t is a type-trait used to extract the basic type from a complicated type,

Examples:

utx::ix32 from const utx::ix32 &

utx::fx64 from const utx::fx64 * &

utx::ix32 from const utx::ix32(*)[3][4][5][6]

utx::ix32(utx::fx64 &, const utx::ix32) from utx::ix32(&)(utx::fx64 &, const utx::ix32)

It uses utx::decay_t at first, but then utx::decay_t is found not the same as std::decay_t, and it has different goals compared with std::decay_t, so utx::decay_t is removed, and then utx::bare_t is added .

A difference:

Applying utx::bare_t to an array type, it will extract a basic data type; but applying utx::bare_t to a function type, it will extract a funtion prototype, not a basic data type. That's because utx::bare_t tries to extract a bared type as more as it can. A function type has zero or more input parameter types and has a return type, but an array only has one basic data type, utx::bare_t can not get exactly one basic data type of a function type.

c++ example

#include <utxcpp/core.hpp>

int main()
{
	using t1 = const utx::ix32;
	using t2 = t1 ************;
	using t3 = const t2 &;
	static_assert(utx::same_as<utx::bare_t<t3>, utx::ix32>);
}

See Also

utx::remove_cvref_t

utx::same_as

utx::ix32

utx::fx64


PrevUpHomeNext