Boost logo

Boost :

Subject: [boost] [Boost.Test] Custom DataSet compiler error with no match for »operator^
From: Olaf Peter (ope-devel_at_[hidden])
Date: 2017-03-28 19:38:32


Hello,

I run into a compile problem with [Boost.Test] DataSet. I can reduce it
by re-using the example provided by the docs:

http://www.boost.org/doc/libs/1_62_0/libs/test/doc/html/boost_test/tests_organization/test_cases/test_case_generation/datasets.html#boost_test.tests_organization.test_cases.test_case_generation.datasets.example_descr

#define BOOST_TEST_MODULE dataset_example68
#include <boost/test/included/unit_test.hpp>
#include <boost/test/data/test_case.hpp>
#include <boost/test/data/monomorphic.hpp>
#include <sstream>

namespace bdata = boost::unit_test::data;

// Dataset generating a Fibonacci sequence
class fibonacci_dataset {
public:
     // Samples type is int
     using sample=int;
     enum { arity = 1 };

     struct iterator {

         iterator() : a(1), b(1) {}

         int operator*() const { return b; }
         void operator++()
         {
             a = a + b;
             std::swap(a, b);
         }
     private:
         int a;
         int b; // b is the output
     };

     fibonacci_dataset() {}

     // size is infinite
     bdata::size_t size() const { return bdata::BOOST_TEST_DS_INFINITE_SIZE; }

     // iterator
     iterator begin() const { return iterator(); }
};

namespace boost { namespace unit_test { namespace data { namespace monomorphic {
   // registering fibonacci_dataset as a proper dataset
   template <>
   struct is_dataset<fibonacci_dataset> : boost::mpl::true_ {};
}}}}

// Creating a test-driven dataset
BOOST_DATA_TEST_CASE(
     test1,
     fibonacci_dataset() ^ fibonacci_dataset(),
     fib_sample, exp)
{
       BOOST_TEST(fib_sample == exp);
}

  error: no match for 'operator^' (operand types are
'boost::unit_test::data::result_of::make<fibonacci_dataset>::type {aka
fibonacci_dataset}' and 'fibonacci_dataset')
      fibonacci_dataset() ^ fibonacci_dataset(),

My use case has to load input and expect files provides by two datasets.
How to fix it?

Thanks,

Olaf


Boost list run by bdawes at acm.org, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk