【发布时间】:2015-04-16 08:10:10
【问题描述】:
我在尝试使用函数对象时遇到了 bad_function_call 异常的问题。
发现问题导致我进入下一个简单示例: http://ideone.com/Mwvw7s
主要摘录:
std::function<void(void*)> f1;
std::function<void(const void*)> f2;
f1 = f2; // Could fail, but didn't
if(f1)
f1(nullptr); // Should never run
else
std::cout << "Skip f1" << std::endl; // Should run
if(f2)
f2(nullptr);
else
std::cout << "Skip f2" << std::endl;
这个 f1 生效,不管 f2。 此问题仅在 MSVC2012 上出现(未尝试任何其他版本的 MS 编译器)并且在 GCC 中按预期工作。
问题是:
- 这个问题是 MSVC2012 特有的吗? (任何人都可以在 MSVC2013 上进行测试)
- 这个问题众所周知吗?
- [如果 1 和 2 为“否”] 我应该向谁投诉?
更新
- MSVC2013 不会重现此类问题。
- 以防万一有人关心,GitHub 存储库有问题:https://github.com/comargo/functional_test
【问题讨论】:
标签: c++ visual-c++ std-function visual-studio-2012