如何重写Borland编译器的C ++模板代码

时间:2016-09-23 16:23:20

标签: c++ c++builder mysql++

我尝试使用Borland的32位编译器编译MySql ++。众所周知,这种编译器存在一些模板语法问题。编译器也几乎已经过时,因为它正被clang编译器取代。

但是,如果可以将以下代码修复为可编译版本,则会节省时间。

编译器错误发生在以下行:

template <> MYSQLPP_EXPORT bool String::conv(bool) const;

编译错误是:

  

[bcc32错误] mystring.h(726):E2506&#39; String :: conv&lt; Type&gt;(Type)const&#39;的显式特化含糊不清:必须指定模板参数
     完整的解析器上下文
     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是自定义字符串类,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());
}

我尝试了各种修改,但没有成功。

1 个答案:

答案 0 :(得分:0)

这个答案由nathanoliver提供

 template <> MYSQLPP_EXPORT bool String::conv<bool>(bool) const;

沉默bcc32编译器......!