如何为 Borland 编译器重写 C++ 模板代码
How to rewrite C++ template code for Borland compiler
我正在尝试使用 Borland 的 32 位编译器编译 MySql++。众所周知,该编译器在某些模板语法方面存在问题。编译器也几乎过时了,因为它正在被 clang 编译器取代。
不过,如果能将下面的代码修复成可编译的版本,就可以节省时间了。
编译器错误发生在以下行:
template <> MYSQLPP_EXPORT bool String::conv(bool) const;
编译器错误是:
[bcc32 Error] mystring.h(726): E2506 Explicit specialization of 'String::conv<Type>(Type) const' is ambiguous: must specify template arguments
Full parser context
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): namespace mysqlpp
String
是自定义字符串 class,conv()
函数是 String
class:[=16= 中的内联模板函数]
/// \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());
}
我尝试了各种修改,但都没有成功。
nathanoliver 给出了这个答案
template <> MYSQLPP_EXPORT bool String::conv<bool>(bool) const;
这会使 bcc32 编译器静音...!
我正在尝试使用 Borland 的 32 位编译器编译 MySql++。众所周知,该编译器在某些模板语法方面存在问题。编译器也几乎过时了,因为它正在被 clang 编译器取代。
不过,如果能将下面的代码修复成可编译的版本,就可以节省时间了。
编译器错误发生在以下行:
template <> MYSQLPP_EXPORT bool String::conv(bool) const;
编译器错误是:
[bcc32 Error] mystring.h(726): E2506 Explicit specialization of 'String::conv<Type>(Type) const' is ambiguous: must specify template arguments
Full parser context
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): namespace mysqlpp
String
是自定义字符串 class,conv()
函数是 String
class:[=16= 中的内联模板函数]
/// \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());
}
我尝试了各种修改,但都没有成功。
nathanoliver 给出了这个答案
template <> MYSQLPP_EXPORT bool String::conv<bool>(bool) const;
这会使 bcc32 编译器静音...!