|
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:
#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