【发布时间】:2014-04-02 23:13:31
【问题描述】:
以下代码使用 gcc 4.8.1 编译良好p>
#include <memory>
class Foo {
public:
explicit Foo(const std::shared_ptr<Foo>& foo) {
}
};
int main() {
Foo foo(nullptr);
}
为什么会这样?显式不应该阻止编译器隐式调用 std::shared_ptr(nullptr) 吗?
【问题讨论】:
-
请注意,通用或其他
template构造函数可以使用 SFINAE 来做你想做的事。