【发布时间】:2019-02-04 04:42:54
【问题描述】:
在编写模板时,class T 可以替换为 const 类型。
考虑:
template<class T> T& min(T& a, T& b) {
return a < b ? a : b;
}
这将适用于以下情况:
int a = 1, b = 5;
const int c = 1, d = 5;
min(a, b); // T is int
min(c, d); // T is const int
但是当用文字调用时会抛出编译错误(像这样):
min(1, 5); // T is const int literal
从“int”类型的右值初始化“int&”类型的非常量引用无效
为什么?一个 int 文字不是 const int 吗?以及如何修改模板以允许使用文字?
(与 gcc 6.3 和 MSVC 2015 一致)
【问题讨论】:
-
“
const int不是 int 字面量” - 否
标签: c++ templates generic-programming