gpt4 book ai didi

c++ - 列表中的 std::is_constructible

转载 作者:太空宇宙 更新时间:2023-11-03 10:40:21 25 4
gpt4 key购买 nike

我想从我可以用模板参数构造的列表中找到类型。在这个例子中:

using my_type = typename get_constructible<char *, int, std::string>::type;

my_type 必须是 std::string 因为在列表中 std::string 是第一个可以用 构造的>char *.

我试过这个:

#include <string>
#include <utility>

template<typename T, typename... Rest>
struct get_constructible
{
using type = void;
};

template<typename T, typename First, typename... Rest>
struct get_constructible<T, First, Rest...>
{
using type = typename std::conditional<
std::is_constructible<First, T>::value,
First,
get_constructible<T, Rest...>::type
>::type;
};

int main(void)
{
using my_type = get_constructible<char *, int, std::string>::type;
my_type s("Hi!");
}

我不明白我的逻辑哪里出了问题。

最佳答案

您的逻辑看起来不错,但您缺少一个 typename在相关名称上 get_constructible<T, Rest...>::type :

using type = typename std::conditional<
std::is_constructible<First, T>::value,
First,
typename get_constructible<T, Rest...>::type
//^^^^^^^^
>::type;

关于c++ - 列表中的 std::is_constructible,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40425936/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com