我正在尝试使用Borland的32位编译器编译MySql++。这个编译器以某些模板语法存在问题而闻名。由于clang编译器正在取代它,因此该编译器几乎已经过时。
但是,如果以下代码可以改为可编译版本,将节省时间。
编译器错误发生在以下行:
编译器错误为:
[bcc32错误] mystring.h(726): E2506“String::conv(Type) const”的显式特化存在歧义:必须指定模板参数 完整的解析器上下文 transaction.cpp(32): #include lib\query.h query.h(37): #include lib\result.h result.h(40): #include lib\row.h row.h(33): #include lib\mystring.h mystring.h(46): 命名空间mysqlpp
但是,如果以下代码可以改为可编译版本,将节省时间。
编译器错误发生在以下行:
template <> MYSQLPP_EXPORT bool String::conv(bool) const;
编译器错误为:
[bcc32错误] mystring.h(726): E2506“String::conv(Type) const”的显式特化存在歧义:必须指定模板参数 完整的解析器上下文 transaction.cpp(32): #include lib\query.h query.h(37): #include lib\result.h result.h(40): #include lib\row.h row.h(33): #include lib\mystring.h mystring.h(46): 命名空间mysqlpp
String
是自定义字符串类,conv()
函数是String
类中的内联模板函数。/// \brief Template for converting the column data to most any
/// numeric data type.
template <class Type>
Type conv(Type) const
{
// Conversions are done using one of double/long/ulong/llong/ullong
// so we call a helper function to do the work using that type.
// This reduces the amount of template code instantiated.
typedef typename detail::conv_promotion<Type>::type conv_type;
return do_conv<conv_type>(typeid(Type).name());
}
我尝试了各种修改,但都没有成功。
template <> MYSQLPP_EXPORT bool String::conv<bool>(bool) const;
这段代码能正常工作吗? - NathanOliver