gpt4 book ai didi

c++ - 类型特征和 const/volatile/&/&&

转载 作者:太空狗 更新时间:2023-10-29 21:18:55 24 4
gpt4 key购买 nike

当你使用部分模板特化编写特征类时,比如说

template <typename> class Foo {};

template <typename T>
struct is_instance_of_foo : std::false_type { };

template <typename T>
struct is_instance_of_foo<Foo<T>> : std::true_type { };

当类型不完全是 Foo<...> 时但有些const/volatile/&/&& Foo 的合格版本该特征将评估为假。使用 std::decay 是一种好习惯吗?去除这些限定符?

template <typename T>
using is_instance_of_foo2 = is_instance_of_foo<std::decay_t<T>>;

或者预计is_instance_of_foo<Foo<char> const &>::value是假的吗?

最佳答案

我想说这实际上取决于特征的期望语义(等同于:预期用途)。在某些情况下,您可能希望涵盖“基于”Foo<T> 的所有内容, 在其他情况下,只有 Foo<T>本身就是您所追求的。

单看名称,我可能会使用 std::remove_cv作为 wrapper 。 const Foo<T>仍然是 Foo 的实例化. Foo<T> &绝对不是——它甚至不是类类型,它是一个引用。

关于c++ - 类型特征和 const/volatile/&/&&,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28766284/

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