我見過fewquestions,指的是std::bad_function_call
exception,但一直沒能通過Google搜索找出導致此異常的原因。是什麼導致std :: bad_function_call?
什麼樣的行爲應該會導致此異常?你能給我一些沒有其他語義問題的例子嗎?
我見過fewquestions,指的是std::bad_function_call
exception,但一直沒能通過Google搜索找出導致此異常的原因。是什麼導致std :: bad_function_call?
什麼樣的行爲應該會導致此異常?你能給我一些沒有其他語義問題的例子嗎?
當然,最簡單的方法就是嘗試調用空的std::function
。
int main() {
std::function<int()> intfunc;
int x = intfunc(); // BAD
}
「執行函數調用,而不必目標調用拋出一個類型 的std :: bad_function_call的例外」
std::function<void(int,int)> f;
f(33,66); // throws std::bad_function_call
的C無學分我....它的尼古拉約祖蒂斯權威人士++標準庫
堆棧交換沒有采用「<>」附上的代碼! 「<>」代碼內的內容不可見。在你使我死亡之前.... ahem ... std :: function
在我的情況是問題是在捕獲列表中。我有一個遞歸lambda函數。
//decl
std::function<void(const SBone*, const core::vector3df&, const core::quaternion&)> f_build;
f_build = [&f_build](const SBone* bone, const core::vector3df& pos, const core::quaternion& rot)
{
...
}
丟失&從捕獲列表中的f_build生成一個壞的調用。
我只是做了一個搜索,不僅是你的例子最簡單,它也看起來像* only *例子! :-) – 2011-04-06 14:05:04
@霍華德:真的嗎?那麼[這個答案](http://stackoverflow.com/questions/5556183/make-c-crash-without-casting/5557843#5557843)怎麼會拋出一個'bad_function_call'? – 2011-04-06 16:15:57
我最好的猜測是,你引用的答案可以歸結爲DeadMG在這裏給出的答案:調用一個空的'std :: function'。對不起,我目前無法測試lambda代碼。我仔細檢查了最新的lambda規範,我發現那裏沒有拋出'bad_function_call'。我重新搜索了'bad_function_call'的最新草案,注意捕獲'bad_function_call'可能被複述的情況,並且沒有發現其他任何被拋出的情況。仍然有可能我錯過了一次。如果你找到它,請爲我們發佈一個指針。 – 2011-04-06 16:45:23