gpt4 book ai didi

c++ - 比较 : C++ template specialization approaches

转载 作者:行者123 更新时间:2023-11-28 03:53:02 25 4
gpt4 key购买 nike

哪个更正确?为什么。

在工作中,我最近在讨论如何进行特定的模板特化。

这样:

template <typename T, bool someBoolVar = is_polymorphic<T>::value>
struct SomeTemplate { // with empty definition
};

template <typename T>
struct SomeTemplate<T, true> {
...
};

template <typename T>
struct SomeTemplate<T, false> {
...
};

或者这样:

template <typename T, bool someBoolVar = is_polymorphic<T>::value>
struct SomeTemplate; // without empty definition -- difference here

template <typename T>
struct SomeTemplate<T, true> {
...
};

template <typename T>
struct SomeTemplate<T, false> {
...
};

最佳答案

都没有。因为两者都不会编译!偏特化语法错误​​!

部分特化是这样实现的:

//correct syntax
template <typename T>
struct SomeTemplate<T,false> {
...
};

不是这个:

//wrong syntax
template <typename T, false>
struct SomeTemplate {
...
};

现在回答你的问题,假设你会修复语法!

在我看来,第二种方法是合理的,因为bool 只能有两个 值,所以三个 版本的SomeTemplate 类模板根本没有意义,这是您在第一种方法中所做的。

关于c++ - 比较 : C++ template specialization approaches,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4736929/

25 4 0