如何过滤元组中的重复类型?
例如:
using Tuple = std::tuple<int, double, int, double, std::string, std::string>
using FilteredTuple = without_duplicates<Tuple>;
其中 without_duplicates 的实现方式是生成以下 FilteredTuple 类型:
std::tuple<int, double, std::string>
最佳答案
#include <type_traits>
#include <tuple>
template <typename T, typename... Ts>
struct unique : std::type_identity<T> {};
template <typename... Ts, typename U, typename... Us>
struct unique<std::tuple<Ts...>, U, Us...>
: std::conditional_t<(std::is_same_v<U, Ts> || ...)
, unique<std::tuple<Ts...>, Us...>
, unique<std::tuple<Ts..., U>, Us...>> {};
template <typename... Ts>
using unique_tuple = typename unique<std::tuple<>, Ts...>::type;
关于c++ - 如何从元组 C++ 中过滤重复类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55941964/