GRETA C ++ VC11未定义的结构

时间:2014-12-30 03:15:35

标签: c++ visual-studio-2013

我正在将VS2002 C ++项目升级到VS2013。该项目使用GRETA正则表达式库。从我看来它没有维护,我无法在任何地方找到更新版本。我想尽可能少地改变我的项目,所以我不想取代GRETA。

restack.h(原文)

namespace detail
{

// For compile-time assertions that generate
// no run-time overhead.
template< bool f > struct static_assert;
template<>         struct static_assert<true> { static_assert() {} };

// Work-around for a template-template parameter problem on VC7.0
template< typename T > struct type2type { typedef T type; };

template< bool F > struct bool2type { enum { value = F }; };

typedef bool2type<true>  true_t;
typedef bool2type<false> false_t;

restack.h(已修改)

namespace regex
{

    namespace detail
    {

        // For compile-time assertions that generate
        // no run-time overhead.
        template< bool f > struct t_static_assert;
        template<>         struct t_static_assert < true > { t_static_assert() { } };

        // Work-around for a template-template parameter problem on VC7.0
        template< typename T > struct type2type { typedef T type; };

        template< bool F > struct bool2type { enum { value = F }; };

        typedef bool2type<true>  true_t;
        typedef bool2type<false> false_t;

我相信我遇到了问题,因为static_assert是VC11中的关键字而不是VC6中的关键字。所以我把t_添加到前面。现在我在regexpr2.h中遇到了这个编译错误:

 error C2079: 'iterator_types_are_not_convertible' uses undefined
 struct 'regex::detail::t_static_assert<false>'

regexpr2.h(已修改)

// If your compile breaks here, it is because CharT* is not
// convertible to type IterT. Check the declaration of your rpattern object.
detail::t_static_assert< detail::is_convertible<CharT*, IterT>::value > const iterator_types_are_not_convertible;
( void ) iterator_types_are_not_convertible;

GRETA可在此处发布:http://research.microsoft.com/en-us/downloads/bd99f343-4ff4-4041-8293-34c054efe749/default.aspx

我该如何解决这个问题?

0 个答案:

没有答案