I'm running Windows 10, 64-bit, MinGW64 with GCC 5.3 64-bit, and BOOST_1_60_0 64-bit.

Here is the stripped down version of what's failing:

    enum class UsedFor { NOTIFY_INPUT, CONST_INPUT, VAR_INPUT,
                         NOTIFY_RESULT, VAR_RESULT};
    UsedFor mUse = UsedFor::NOTIFY_INPUT;
    BOOST_CHECK(mUse == Operand::UsedFor::NOTIFY_INPUT);
//  BOOST_CHECK_EQUAL(mUse, Operand::UsedFor::NOTIFY_INPUT);

If BOOST_CHECK_EQUAL() is commented out, BOOST_CHECK() complies and executes without error.
However,

//  BOOST_CHECK(mUse == Operand::UsedFor::NOTIFY_INPUT);
    BOOST_CHECK_EQUAL(mUse, Operand::UsedFor::NOTIFY_INPUT);

If BOOST_CHECK() is comment out, BOOST_CHECK_EQUAL() gets a template barf with the general comment, " template argument deduction/substitution failed:".  Here are some of the complaints:

D:\Boost_1_60_0/boost/test/tools/detail/print_helper.hpp:50:14: note:   cannot convert 't' (type 'const DiGSE::Operand_Class_Test_Suite::Operand_Default_Constructor_Test::test_method()::UsedFor') to type 'std::_Setw'
         ostr << t;
              ^

D:/Program Files/mingw-w64/x86_64-5.3.0-posix-seh-rt_v4-rev0/mingw64/x86_64-w64-mingw32/include/c++/iomanip:208:5: note: candidate: template<class _CharT, class _Traits> std::basic_ostream<_CharT, _Traits>& std::operator<<(std::basic_ostream<_CharT, _Traits>&, std::_Setprecision)
     operator<<(basic_ostream<_CharT, _Traits>& __os, _Setprecision __f)

D:\Boost_1_60_0/boost/test/tools/detail/print_helper.hpp:50:14: note:   cannot convert 't' (type 'const DiGSE::Operand_Class_Test_Suite::Operand_Default_Constructor_Test::test_method()::UsedFor') to type 'std::_Setprecision'
         ostr << t;
                ^

At this point, it seems to be complaining about every io manipulator in existence.

D:\Boost_1_60_0/boost/test/tools/detail/print_helper.hpp:50:14: note:   mismatched types 'const std::piecewise_linear_distribution<_RealType>' and 'const DiGSE::Operand_Class_Test_Suite::Operand_Default_Constructor_Test::test_method()::UsedFor'
         ostr << t;

    
Then it gets to the point of, apparently, dragging out all of the error messages it doesn't get to use very often:

 mismatched types 'const std::chi_squared_distribution<_RealType>' and 'const DiGSE::Operand_Class_Test_Suite::Operand_Default_Constructor_Test::test_method()::UsedFor'
         ostr << t;
              ^


For the time being, I can simply use the explicit == check, but it looks like there's a problem here.

Merrill Cornish