我正在尝试自定义std::function
并从以下代码开始:
#include <functional>
template <typename>
struct my_function;
template <typename R, typename... Args>
struct my_function<R(Args...)> : std::function<R(Args...)> {
using base = std::function<R(Args...)>;
using base::function;
};
int main() {
my_function<int(int)> f = nullptr;
}
我期望来自std::function
的{{1}}对象的构造函数由std::nullptr_t
继承。所以,代码应该编译好。虽然GCC 5.2(C ++ 14)在编译代码时没有问题,但是clang 3.6(C ++ 14)产生了以下错误信息,这很令人困惑:
my_function
这是一个铿锵的错误还是我的代码不正确?如果(非常幸运)后者是真的,我该如何修复代码?