gpt4 book ai didi

c++ - 模板参数互斥

转载 作者:搜寻专家 更新时间:2023-10-31 01:14:17 25 4
gpt4 key购买 nike

我有一个包含多个模板参数的模板。

    template<typename Appl, typename StoredData>
class Box {
};

参数的取值是互斥的:即对于 Appl 的每个值,StoredData 只允许一组特定类型。

例如:Appl 是 List、StoredData - double、charAppl 是树,StoredData - int

有没有办法在编译时强制执行此限制?所以,

     Box<List, double> - compiles
Box<List, int> - fails
Box<Tree, int> - compiles

最佳答案

是的,有:

template<typename Appl, typename StoredData>
class Box {
static_assert(
std::is_same<Appl, List>::value && std::is_same<StoredData, double>::value ||
std::is_same<Appl, Tree>::value && std::is_same<StoredData, int>::value,
"Bad parameters"
);
};

这是一个工作示例 http://ideone.com/enECW ,尝试改变一些类型,它会编译失败。

关于c++ - 模板参数互斥,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11549703/

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