Issue 342: Remove VC++ 5.0/6.0 support

18 views
Skip to first unread message

Jeffrey Walton

unread,
Dec 2, 2016, 9:33:37 PM12/2/16
to Crypto++ Users
Hi Everyone,

We opened a new ticket at https://github.com/weidai11/cryptopp/issues/342 .

If there are objections, then now is the time to voice them.

Jeff

Jeffrey Walton

unread,
Dec 6, 2016, 8:45:24 PM12/6/16
to Crypto++ Users

Most of this was accomplished at https://github.com/weidai11/cryptopp/commit/ba75834ae9b3846a19291c8c281626dd0a891779. It picked all the low hanging fruit (i.e., the easy stuff).

There's one piece remaining, and its burrowed in deeply. Early Microsoft VC++ compilers could not take enums as template parameters, so it gave rise to goodness like shown below.

I made a quick pass to see how painful it would be to remove, and it was mostly painful. It exceeded "easy" and "discomfort" levels.

Any thoughts on how to proceed?

Jeff

**********

// VC60 workaround: using enums as template parameters causes problems
//! \brief Converts an enumeration to a type suitable for use as a template parameter
template <typename ENUM_TYPE, int VALUE>
struct EnumToType
{
    static ENUM_TYPE ToEnum() {return (ENUM_TYPE)VALUE;}
};

//! \brief Provides the byte ordering
//! \details Big-endian and little-endian modes are supported. Bi-endian and PDP-endian modes
//!   are not supported.
enum ByteOrder {
    //! \brief byte order is little-endian
    LITTLE_ENDIAN_ORDER = 0,
    //! \brief byte order is big-endian
    BIG_ENDIAN_ORDER = 1};

//! \brief Provides a constant for LittleEndian
typedef EnumToType<ByteOrder, LITTLE_ENDIAN_ORDER> LittleEndian;
//! \brief Provides a constant for BigEndian
typedef EnumToType<ByteOrder, BIG_ENDIAN_ORDER> BigEndian;

Jeffrey Walton

unread,
Dec 18, 2016, 8:17:31 PM12/18/16
to Crypto++ Users

We opened a new ticket at https://github.com/weidai11/cryptopp/issues/342 .

If there are objections, then now is the time to voice them.

It looks like we also lost support for Visual Studio 7.0/.Net 2002. Visual Studio 7.1/.Net 2003 works as expected.

.Net 2002 needed some of the workarounds labeled as VC6.0. The .Net 2002 list is not as big as the VC 6.0 list, and appears to be limited to the AlgorithmParameters class and the "Partial Ordering of Function Templates" bug (https://support.microsoft.com/en-us/kb/240869).

Is the loss of .Net 2002 going to negatively affect or harm anyone?

Jeff
Reply all
Reply to author
Forward
0 new messages