以下是我的代碼,如果回調參數的數量超過9,在本示例中爲TRY_VARIADIC
,則無法通過命令g++ -std=c++11 a.cpp -Wall -lboost_thread -lboost_system
的編譯。如何調用boost :: thread的ctor的可變模板版本?
#include <iostream>
#include <boost/thread.hpp>
void foo(void) {}
template <typename T, typename... argTs>
void foo(T a0, argTs ...args)
{
std::cout << a0 << std::endl;
foo(args...);
}
int main(int argc, char *argv[])
{
#if TRY_VARIADIC
boost::thread t(foo<int, int, int, int, int, int, int, int, int, int>, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10);
#else
boost::thread t(foo<int, int, int, int, int, int, int, int, int>, 1, 2, 3, 4, 5, 6, 7, 8, 9);
#endif
t.join();
return 0;
}
的boost::thread
構造函數的可變參數版本允許超過900點的參數,但我不知道如何使編譯器選擇它。任何建議,提示,例子都非常感謝。謝謝。 :-)
「如果你需要超過9個參數,你可能會錯過一些」 - 來源未知 – sehe