Esp*_*eon 2 c++ optimization micro-optimization c++-concepts c++20
比方说,我有我的List<T>
课。我有很多函数,我必须传递我T
类型的单个对象。例如
void add(const T& item)
{
...
}
Run Code Online (Sandbox Code Playgroud)
T
如果是某个类或结构就有意义。但是,如果T
是字节或整数,则通过引用传递它是没有意义的,甚至是错误的,因为内存指针花费 8 个字节(在 32 位系统上为 4 个字节),即我通过 8 字节大小的指针传递 1 字节大小的数据类型。
所以我决定使用using
指令定义参数数据类型。有点儿:
using argType = const T&; requires sizeof(T) > 8
using argType = T; requires sizeof(T) <= 8
Run Code Online (Sandbox Code Playgroud)
但是,显然,这段代码不起作用。您能为我提出其他解决方案吗?
听起来你需要的是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) { }
};
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
152 次 |
最近记录: |