`04模板全特化` 中“细节”代码注释描述错误
Closed this issue · 6 comments
rightrightright commented
见细节部分的第三个代码块
//constexpr auto n3 = g<int>(0); // Error! 函数模板 f 所实例化的所有函数都不可编译期求值,它们都不以 constexpr 修饰
注释中的f
应该为g
非常抱歉,由于我的疏忽留下了错误的链接地址,现已修正到正确的地址
Mq-b commented
首先很感谢您的提醒,这的确需要修改,写的时候没注意。
其次,您的链接是错误的,无法打开。
Side-Cloud commented
首先很感谢您的提醒,这的确需要修改,写的时候没注意。 其次,您的链接是错误的,无法打开。
我还是喜欢“你链接错了,无法访问”
Side-Cloud commented
首先很感谢您的提醒,这的确需要修改,写的时候没注意。 其次,您的链接是错误的,无法打开。
constexpr修饰在模板,特化的没有constexpr,所以没特化的能constexpr,特化的不能constexpr
Mq-b commented
另外,其实注释的错误不单单是一个 f
的问题。
Error! 函数模板 f 所实例化的所有函数都不可编译期求值,它们都不以 constexpr 修饰
这段注释本身不对,如果函数模板 g
我们没有使用 g<int>
,自然可以编译期求值:https://godbolt.org/z/1Prqr8Woj
template<class T>
constexpr T g(T) { return 6; } // 这里声明的 constexpr 修饰函数模板是无效的
template<>
int g<int>(int) { return 6; } // OK,g<int> 不是以 constexpr 修饰的
int main(){
//constexpr auto n3 = g<int>(0); // Error! 函数模板 g<int> 不是以 constexpr 修饰的
constexpr auto n3 = g<double>(0); // OK 函数模板 g<double> 自然没问题
}
Mq-b commented
首先很感谢您的提醒,这的确需要修改,写的时候没注意。 其次,您的链接是错误的,无法打开。
constexpr修饰在模板,特化的没有constexpr,所以没特化的能constexpr,特化的不能constexpr
我已经注意到,并且我重新观看了一下视频,似乎在我录制视频的时候我根本没看教案,是自己写的,倒是没说出什么问题。
Mq-b commented
视频中我提到了一句话:
以我们特化为准
倒也没问题。