代码示例:
额外的见解:
error : cannot mangle this 'auto' type yet
Run Code Online (Sandbox Code Playgroud)
我期望的是,根据上面提供的示例,分别获得两种具有相同 -可评估- 的类型std::tuple_size_v:
error : cannot mangle this 'auto' type yet
Run Code Online (Sandbox Code Playgroud)
我是否遗漏了一点?
代码示例:
class std::tuple<
struct std::integral_constant<bool,0>,
struct std::integral_constant<bool,1>,
struct std::integral_constant<bool,0>
>
class std::tuple<bool,bool,bool>
Run Code Online (Sandbox Code Playgroud)
感谢@Yakk - Adam Nevraumont,作为结论,这是我修复它的方法:
using as_array_t = std::array<std::tuple_element_t<0, decltype(std::tuple{trait<Ts>::value...})>, sizeof...(Ts)>;
constexpr static inline auto as_array_v = as_array_t{trait<Ts>::value...};
Run Code Online (Sandbox Code Playgroud)
这避免了#if __clang__ /* workaround on clang ICE ... */代码库中的另一个
[编辑]为了完整性目的:
template <typename T>
using is_int = std::is_same<int, T>;
using results = trait_result<is_int, char, int, bool>;
using results_as_tuple = results::as_t<std::tuple>;
using results_as_tuple_value_type = std::decay_t<decltype(results::as_v<std::tuple>)>; // error here
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1621 次 |
| 最近记录: |