Any*_*orn 1 c++ templates constructor
假设:
struct P {
P(int v);
};
int v;
P p = 0; // allow
P q = v; // Fail at compile time
Run Code Online (Sandbox Code Playgroud)
怎么能实现呢?任何模板技巧?
我正在尝试编写具有特殊指针属性的allocator.不幸的是,std实现使用从int到NULL指针的隐式转换:
{ return __n != 0 ? _M_impl.allocate(__n) : 0; }
Run Code Online (Sandbox Code Playgroud)
我的指针实现:http: //code.google.com/p/asadchev/source/browse/trunk/projects/boost/cuda/mapped_ptr.hpp
我的分配器实现:http: //code.google.com/p/asadchev/source/browse/trunk/projects/boost/cuda/allocator.hpp
我想使用原始指针强制显式构造,以避免令人讨厌的问题.
你可以做到,但你不会喜欢它
struct P {
private:
struct null_absorb;
public:
P(null_absorb *v);
};
int v;
P p = 0; // allow
P q = v; // Fail at compile time
Run Code Online (Sandbox Code Playgroud)
这将只允许空指针常量.换句话说,零编译时间值.