我正在使用此代码使用可变参数模板创建多个函数包装器:
// Compile with g++ -std=c++0x $(pkg-config sigc++-2.0 --cflags --libs) test.cpp -o test
#include <iostream>
#include <type_traits>
#include <sigc++/sigc++.h>
template <typename R, typename G, typename... Ts>
class FuncWrapper
{
public:
FuncWrapper(G object, std::string const& name, sigc::slot<R, Ts...> function) {};
};
int main()
{
FuncWrapper<void, int, int, bool, char> tst(0, "test", [] (int a, bool b, char c) {});
return EXIT_SUCCESS;
}
由于已知问题,此代码可以使用 clang++ 正确编译,但不能使用 g++ 编译:
test.cpp:9:73:抱歉,未实现:无法将“Ts ...”扩展为固定长度的参数列表
我知道 gcc-4.7 应该正确处理这个问题,但我现在无法升级......所以我想有一个解决方法来Ts...
正确解包。我已经测试了这里在类似问题中的建议,但他们似乎并没有解决这里的问题。