gtest интенсивно использует потоки для вывода, но кажется, что поддержка boost :: variable для печати через перегруженный оператор << очень ограничена, если не существует. </p>
Взгляните на это:
#include <boost/variant.hpp>
#include <boost/cstdint.hpp>
#include <boost/uuid/uuid.hpp>
#include <iostream>
typedef boost::make_recursive_variant<bool, boost::uint8_t, boost::uint32_t,
boost::int32_t, double, std::string, boost::uuids::uuid>::type rvariant_type;
int main() {
rvariant_type v1 = true;
std::cout << v1 << std::endl;
return 0;
}
Эта очень короткая программа выдает ту же ошибку компиляции, что и gtest.
Дополняя это:
std::ostream& operator<<(std::ostream& out, const rvariant_type& p) {
return out << boost::get<bool>(p);
}
делает мою тестовую компиляцию, я посмотрю, смогу ли я заставить ваш пример работать.
ОБНОВЛЕНИЕ: Я только что скомпилировал и успешно выполнил тест на основе вашего кода после помещения вышеупомянутого оператора <<, поэтому отсутствие оператора << именно то, что его вызывало. </p>