forked from qt-creator/qt-creator
Utils: Make ssize and usize more generic
It now works for all container which implement std::size like C arrays. Change-Id: I9ccf2c50b4e7518e44890b52686d5561358bcf8d Reviewed-by: hjk <hjk@qt.io> Reviewed-by: Tim Jenssen <tim.jenssen@qt.io>
This commit is contained in:
@@ -218,14 +218,6 @@ OutputContainer setUnionMerge(InputContainer1 &&input1,
|
|||||||
template<class OutputContainer, class InputContainer1, class InputContainer2, class Merge>
|
template<class OutputContainer, class InputContainer1, class InputContainer2, class Merge>
|
||||||
OutputContainer setUnionMerge(InputContainer1 &&input1, InputContainer2 &&input2, Merge merge);
|
OutputContainer setUnionMerge(InputContainer1 &&input1, InputContainer2 &&input2, Merge merge);
|
||||||
|
|
||||||
/////////////////////////
|
|
||||||
// usize / ssize
|
|
||||||
/////////////////////////
|
|
||||||
template<typename Container>
|
|
||||||
std::make_unsigned_t<typename Container::size_type> usize(Container container);
|
|
||||||
template<typename Container>
|
|
||||||
std::make_signed_t<typename Container::size_type> ssize(Container container);
|
|
||||||
|
|
||||||
/////////////////////////
|
/////////////////////////
|
||||||
// setUnion
|
// setUnion
|
||||||
/////////////////////////
|
/////////////////////////
|
||||||
@@ -1340,15 +1332,15 @@ OutputContainer setUnionMerge(InputContainer1 &&input1,
|
|||||||
}
|
}
|
||||||
|
|
||||||
template<typename Container>
|
template<typename Container>
|
||||||
std::make_unsigned_t<typename Container::size_type> usize(Container container)
|
auto usize(const Container &container)
|
||||||
{
|
{
|
||||||
return static_cast<std::make_unsigned_t<typename Container::size_type>>(container.size());
|
return static_cast<std::make_unsigned_t<decltype(std::size(container))>>(std::size(container));
|
||||||
}
|
}
|
||||||
|
|
||||||
template<typename Container>
|
template<typename Container>
|
||||||
std::make_signed_t<typename Container::size_type> ssize(Container container)
|
auto ssize(const Container &container)
|
||||||
{
|
{
|
||||||
return static_cast<std::make_signed_t<typename Container::size_type>>(container.size());
|
return static_cast<std::make_signed_t<decltype(std::size(container))>>(std::size(container));
|
||||||
}
|
}
|
||||||
|
|
||||||
template<typename Compare>
|
template<typename Compare>
|
||||||
|
|||||||
Reference in New Issue
Block a user