gpt4 book ai didi

C++ 对不同概念的不同使用声明

转载 作者:行者123 更新时间:2023-12-01 23:11:30 24 4
gpt4 key购买 nike

比方说,我有我的 List<T>类(class)。我有很多功能,我必须传递我的 T 的单个对象。类型。例如

void add(const T& item)
{
...
}

如果 T 就有意义了是某个类或结构。但是,如果 T是字节或整数,通过引用传递它是没有意义的,甚至是错误的,因为内存指针占用 8 个字节(在 32 位系统上为 4 个字节),即我通过 8 字节大小的指针传递 1 字节大小的数据类型。

所以我决定使用 using 定义参数数据类型指示。种类:

using argType = const T&; requires sizeof(T) > 8
using argType = T; requires sizeof(T) <= 8

但是,显然,这段代码不起作用。能否为此提出其他解决方案?

最佳答案

听起来你需要的是conditional_t :

#include <type_traits>

template<class T>
class List {
using argType = std::conditional_t<(sizeof(T) > 8), const T&, T>;

void add(argType item) { }
};

关于C++ 对不同概念的不同使用声明,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/69863605/

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