gpt4 book ai didi

c++ - 标准 C++ 中的类型持有者

转载 作者:行者123 更新时间:2023-12-01 23:22:13 31 4
gpt4 key购买 nike

std C++ 库中有这样的东西吗?

template <typename T>
struct TypeHolder { using type = T; };

即仅用于传递类型并存储它的特殊结构。我的想法是我想按值将它传递到函数内部,例如:

Try it online!

void f(auto th) { typename decltype(th)::type val{}; }
void h() {
auto g = [](auto th){ typename decltype(th)::type val{}; };
f(TypeHolder<int>());
g(TypeHolder<int>());
}

因为我可以传递类型为 template <typename T>但现在我想按值传递它作为自动函数和/或非模板化 lambda 参数之一。

存在 std::integral_constant这在某种程度上可用于类型持有,但它不适合我,因为我不想提供我的类型的值和/或实例化值。不仅如此,我还有非结构类型,因此我无法在 std::integral_constant 中提供它的值。

当然我可以使用模板结构TypeHolder上面在代码中提到,但我正在寻找基于标准库的解决方案(如果存在),而不是重新发明轮子。

最佳答案

从 C++20 开始,您可以使用 std::type_identity这正是您想要的类型。

f(std::type_identity<int>());
g(std::type_identity<int>());

demo

关于c++ - 标准 C++ 中的类型持有者,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67914917/

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