嘿everyguys我最近一直在看升壓信號,因爲我想從我自己的自定義代碼切換到處理信號通知。我遇到了一個問題編譯從這裏的第一個例子:http://www.boost.org/doc/libs/1_53_0/doc/html/signals2/tutorial.html,這裏是例如源代碼:鏗鏘聲++不會構建升壓信號的第一個例子2
struct HelloWorld
{
void operator()() const
{
std::cout << "Hello, World!" << std::endl;
}
};
// Signal with no arguments and a void return value
boost::signals2::signal<void()> sig;
// Connect a HelloWorld slot
HelloWorld hello;
sig.connect(hello);
// Call all of the slots
sig();
的問題,從試圖編譯此與出現:++鐺-std = C++ 11 signals2example.cpp這個錯誤是在這裏:
error: no matching function for call to 'get'
func(std::get<indices>(args)...);
爲了縮小我評論了所有的行,直到我想通了其中一個導致它的問題,它的行只是說「SIG();」這個問題似乎與std :: get函數有關,這個函數是用於元組或其他東西的。關於boost :: signal2和clang ++的衝突,網上沒有很多有用的帖子。我還應該注意到,g ++根本沒有任何抱怨地編譯這個文檔。
沒有看到我只能猜到的實際代碼,但我的猜測是,在這個例子中,'indices'名稱是一個變量而不是編譯時常量。模板是僅編譯時構造,因此所有非類型模板參數都必須是編譯時常量。看起來很奇怪,Boost會犯這樣的錯誤。 –
@JoachimPileborg這個圖書館的表演並不是那麼棒;我對質量這麼低的水平並不感到驚訝,我試過這個圖書館一次,我看不出有什麼人以及爲什麼會有人使用這個,所以沒有任何意義。 – user2485710