【发布时间】:2014-05-26 04:39:40
【问题描述】:
在下面的sn-p中:
void normalize(path& p)
{
// do something with p
}
template<typename... T>
void normalize(T&... t)
{
normalize(t)...; // (L)
}
在我的实际理解中,(L) 行扩展为:
template<typename... T>
void normalize(T&... t) // T = {t1, t2, t3}, for example
{
normalize(t1), normalize(t2), normalize(t3);
}
这些表达式中的每一个都将执行normalize 的单参数版本。但是,g++ (4.8.1) 向我抛出以下错误:
prueba.cpp: In function 'void normalize(T& ...)':
prueba.cpp:155:17: error: expected ';' before '...' token
normalize(t)...;
^
prueba.cpp:155:20: error: parameter packs not expanded with '...':
normalize(t)...;
^
prueba.cpp:155:20: note: 't'
我的代码有什么问题?
【问题讨论】:
-
@erenon 确实有帮助!
标签: c++ templates c++11 variadic-templates g++4.8