我試圖做這樣的事情:多個可變參數參數
template <class ... Required>
class Base
{
template <class First, class ... Rest>
void bar(First f, Rest ... r)
{
[...]
return bar(r...);
}
void bar()
{
return;
}
public:
template <class ... Optional>
void foo(Required ... r, Optional ... o)
{
[...]
bar(r...); //separate the required from the optional
bar(o...);
}
};
class Child : Base<Foo1, Foo2>
{
public:
Child()
{
[...]
foo(foo1,foo2,foo3);
}
}
但第一bar
呼叫接收所有的參數,而不是隻有Required
的,而第二個呼叫接收任何參數, 。我錯過了多個可變參數嗎?編譯器不知道Required...
是Foo1,Foo2
,其餘的是Optional
?
您正在使用哪種編譯器?我用gcc 4.7.2和clang 3.3試了你的代碼,並且他們都產生了預期的輸出。 – rici
通過gcc 4.6.3和鏗鏘3.0通過liveworkspace嘗試和鏗鏘3.0顯示您正在觀察的錯誤。 – rici