gpt4 book ai didi

c++ - 为什么常量的模板特化需要 const 变量

转载 作者:太空宇宙 更新时间:2023-11-03 10:38:38 26 4
gpt4 key购买 nike

我正在尝试了解常量模板特化。考虑以下具有一种特化的模板函数:

enum class NodeType
{A, B, C};

template<NodeType>
bool afunc()
{
cout<<"calling generic"<<endl;
}

template<>
bool afunc<NodeType::A>()
{
cout<<"calling specific"<<endl;
}

我可以按如下方式调用专用实例:

 const NodeType x = NodeType::A;

afunc<x>();

但是,如果我删除 const,那么编译器会提示模板/参数推导失败。为什么需要 const?

最佳答案

模板只是编译时的东西。如果删除 const,则 x 不再是编译时常量,因此不能用于模板参数。

另请注意,x 只是一个编译时常量,因为您在初始化时就这样定义了它。

关于c++ - 为什么常量的模板特化需要 const 变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51288856/

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