作为一名老c ++程序员,我最近在学习c ++ 11。阅读 Effective Mordern C ++ 时,我找到了有趣的类型:
char (&) [13]
将数组传递给需要T&:
的函数模板时template<typename T>
void funcTemplate1(T& param)
{
std::cout << boost::typeindex::type_id_with_cvr<T>().pretty_name() << std::endl;
}
void main()
{
char szHello[] = "Hello, World";
funcTemplate1(szHello);
}
输出:
char (&) [13]
从未见过。什么意思?
答案 0 :(得分:8)
如果我们插入丢失的函数参数名称,它将变为:
char (¶m) [13]
你无疑对此很熟悉:
char param[13]
当然是13个字符的数组。添加&
表示它是对它的引用。括号是必需的,因为它是对数组的引用,而不是引用数组。