我正在处理一个模板,它非常简单。这是当前的结构:
//primary template
template<typename T>
const T bit_cast(const BitExpr* p);
//specialization
template<>
inline const BitBinExpr* bit_cast<BitBinExpr*>(const BitExpr* p) {
if (p->type == XOR || p->type == AND)
return static_cast<const BitBinExpr*>(p);
return nullptr;
}
// more specializations follow
但 Visual Studio 坚持认为这是无效的。但是,当参数和返回类型不是 const
时,这工作得很好。如何说服 VS 接受此代码?