0
我使用了兩個使用綁定功能的自定義庫。 其中一個使用std :: tr1中的綁定功能,而另一個使用boost綁定在客戶端代碼的不同部分使用boost :: bind和std :: tr1 :: bind
現在問題在於佔位符。由於升壓綁定的佔位符是一個無名的命名空間我面臨以下錯誤,當我嘗試編譯我的代碼
<file_name.cpp:line_no:char_no>: error: reference to '_1' is ambiguous
/usr/include/c++/4.6/tr1/functional:859:23: error: candidates are: std::tr1::_Placeholder<1> std::tr1::placeholders::{anonymous}::_1
<path>/common/include/boost/bind/placeholders.hpp:55:15: error: boost::arg<1> {anonymous}::_1
附加只是從客戶端代碼使用升壓綁定功能,行,我現在用
f_args.f_cb = boost::bind(&MyProcess::flush, MyProcess::Type, _1, _2);
如何解決這個問題?對我來說,排除了對圖書館進行更改或使用不同的圖書館的可能性。提前致謝。
命名空間包含在庫頭文件中。 – rgk
@rgk:你是說,你的頭文件中有'using namespace std :: tr1 :: placeholders;'語句嗎? – MikeMB
@rgk好的。第3段如何?創建新的佔位符(相同類型的變量,或使用traits類將其他類型標記爲佔位符變量)並使用它們。 – Yakk