PrevUpHomeNext

esv::bare_t


Animals are good friends of human beings.

esv::bare_t

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

Examples:

esv::ix32 from const esv::ix32 &

esv::fx64 from const esv::fx64 * &

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

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

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

A difference:

Applying esv::bare_t to an array type, it will extract a basic data type; but applying esv::bare_t to a function type, it will extract a funtion prototype, not a basic data type. That's because esv::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, esv::bare_t can not get exactly one basic data type of a function type.

c++ example

#include <esvcpp/core.hpp>

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

See Also

esv::remove_cvref_t

esv::same_as

esv::ix32

esv::fx64


PrevUpHomeNext

esv::print