Skip to content

Instantly share code, notes, and snippets.

@CapSel
Created November 10, 2017 20:16
Show Gist options
  • Save CapSel/1345b1af1c4b227dfad899f9bf068eb3 to your computer and use it in GitHub Desktop.
Save CapSel/1345b1af1c4b227dfad899f9bf068eb3 to your computer and use it in GitHub Desktop.
[ 44%] Building CXX object test/CMakeFiles/type_safe_test.dir/strong_typedef.cpp.o
In file included from /home/capsel/libs/type_safe/test/strong_typedef.cpp:5:
/home/capsel/libs/type_safe/include/type_safe/strong_typedef.hpp:343:9: error: no matching function for call to 'get_underlying'
TYPE_SAFE_DETAIL_MAKE_OP(==, equality_comparison, bool)
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/home/capsel/libs/type_safe/include/type_safe/strong_typedef.hpp:234:22: note: expanded from macro 'TYPE_SAFE_DETAIL_MAKE_OP'
lhs)) Op detail::get_underlying<StrongTypedef>(detail::forward<Other>(rhs))); \
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/home/capsel/libs/type_safe/build/test/catch.hpp:1040:80: note: in instantiation of function template specialization
'type_safe::strong_typedef_op::operator==<type, const convert_b &, void>' requested here
auto compareEqual( LhsT const& lhs, RhsT const& rhs ) -> bool { return lhs == rhs; };
^
/home/capsel/libs/type_safe/build/test/catch.hpp:1069:51: note: in instantiation of function template specialization
'Catch::compareEqual<type, convert_b>' requested here
return BinaryExpr<LhsT, RhsT const&>( compareEqual( m_lhs, rhs ), m_lhs, "==", rhs );
^
/home/capsel/libs/type_safe/test/strong_typedef.cpp:55:20: note: in instantiation of function template specialization
'Catch::ExprLhs<const type &>::operator==<convert_b>' requested here
REQUIRE(t1 == b);
^
/home/capsel/libs/type_safe/include/type_safe/strong_typedef.hpp:166:61: note: candidate function not viable: no known
conversion from 'const convert_b' to 'const type' for 1st argument
constexpr const underlying_type<StrongTypedef>& get_underlying(
^
/home/capsel/libs/type_safe/include/type_safe/strong_typedef.hpp:173:68: note: candidate function not viable: no known
conversion from 'const convert_b' to 'type' for 1st argument
TYPE_SAFE_CONSTEXPR14 underlying_type<StrongTypedef>&& get_underlying(
^
/home/capsel/libs/type_safe/include/type_safe/strong_typedef.hpp:350:40: error: invalid operands to binary expression
('int' and 'const convert')
TYPE_SAFE_DETAIL_MAKE_OP_MIXED(==, mixed_equality_comparison, bool)
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/home/capsel/libs/type_safe/include/type_safe/strong_typedef.hpp:269:67: note: expanded from macro
'TYPE_SAFE_DETAIL_MAKE_OP_MIXED'
return Result(get(static_cast<const StrongTypedef&>(lhs)) Op detail::forward<Other>(rhs)); \
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ^ ~~~~~~~~~~~~~~~~~~~~~~~~~~~
/home/capsel/libs/type_safe/build/test/catch.hpp:1040:80: note: in instantiation of function template specialization
'type_safe::strong_typedef_op::operator==<type, int, const convert &, void>' requested here
auto compareEqual( LhsT const& lhs, RhsT const& rhs ) -> bool { return lhs == rhs; };
^
/home/capsel/libs/type_safe/build/test/catch.hpp:1069:51: note: in instantiation of function template specialization
'Catch::compareEqual<type, convert>' requested here
return BinaryExpr<LhsT, RhsT const&>( compareEqual( m_lhs, rhs ), m_lhs, "==", rhs );
^
/home/capsel/libs/type_safe/test/strong_typedef.cpp:86:20: note: in instantiation of function template specialization
'Catch::ExprLhs<const type &>::operator==<convert>' requested here
REQUIRE(t1 == a);
^
/home/capsel/libs/type_safe/include/type_safe/strong_typedef.hpp:343:9: note: candidate template ignored: could not match
'equality_comparison<type-parameter-0-0>' against 'const int'
TYPE_SAFE_DETAIL_MAKE_OP(==, equality_comparison, bool)
^
/home/capsel/libs/type_safe/include/type_safe/strong_typedef.hpp:199:22: note: expanded from macro 'TYPE_SAFE_DETAIL_MAKE_OP'
constexpr Result operator Op(const Name<StrongTypedef>& lhs, const Name<StrongTypedef>& rhs) \
^
/home/capsel/libs/type_safe/include/type_safe/strong_typedef.hpp:343:9: note: candidate template ignored: could not match
'equality_comparison<type-parameter-0-0>' against 'const int'
/home/capsel/libs/type_safe/include/type_safe/strong_typedef.hpp:207:22: note: expanded from macro 'TYPE_SAFE_DETAIL_MAKE_OP'
constexpr Result operator Op(Name<StrongTypedef>&& lhs, const Name<StrongTypedef>& rhs) \
^
/home/capsel/libs/type_safe/include/type_safe/strong_typedef.hpp:343:9: note: candidate template ignored: could not match
'equality_comparison<type-parameter-0-0>' against 'const int'
/home/capsel/libs/type_safe/include/type_safe/strong_typedef.hpp:215:22: note: expanded from macro 'TYPE_SAFE_DETAIL_MAKE_OP'
constexpr Result operator Op(const Name<StrongTypedef>& lhs, Name<StrongTypedef>&& rhs) \
^
/home/capsel/libs/type_safe/include/type_safe/strong_typedef.hpp:343:9: note: candidate template ignored: could not match
'equality_comparison<type-parameter-0-0>' against 'const int'
/home/capsel/libs/type_safe/include/type_safe/strong_typedef.hpp:222:22: note: expanded from macro 'TYPE_SAFE_DETAIL_MAKE_OP'
constexpr Result operator Op(Name<StrongTypedef>&& lhs, Name<StrongTypedef>&& rhs) \
^
/home/capsel/libs/type_safe/include/type_safe/strong_typedef.hpp:343:9: note: candidate template ignored: could not match
'equality_comparison<type-parameter-0-0>' against 'const int'
/home/capsel/libs/type_safe/include/type_safe/strong_typedef.hpp:231:22: note: expanded from macro 'TYPE_SAFE_DETAIL_MAKE_OP'
constexpr Result operator Op(const Name<StrongTypedef>& lhs, Other&& rhs) \
^
/home/capsel/libs/type_safe/include/type_safe/strong_typedef.hpp:343:9: note: candidate template ignored: could not match
'equality_comparison<type-parameter-0-0>' against 'const int'
/home/capsel/libs/type_safe/include/type_safe/strong_typedef.hpp:239:22: note: expanded from macro 'TYPE_SAFE_DETAIL_MAKE_OP'
constexpr Result operator Op(Name<StrongTypedef>&& lhs, Other&& rhs) \
^
/home/capsel/libs/type_safe/include/type_safe/strong_typedef.hpp:343:9: note: candidate template ignored: could not match
'equality_comparison<type-parameter-0-0>' against 'const convert'
/home/capsel/libs/type_safe/include/type_safe/strong_typedef.hpp:247:22: note: expanded from macro 'TYPE_SAFE_DETAIL_MAKE_OP'
constexpr Result operator Op(Other&& lhs, const Name<StrongTypedef>& rhs) \
^
/home/capsel/libs/type_safe/include/type_safe/strong_typedef.hpp:343:9: note: candidate template ignored: could not match
'equality_comparison<type-parameter-0-0>' against 'const convert'
/home/capsel/libs/type_safe/include/type_safe/strong_typedef.hpp:256:22: note: expanded from macro 'TYPE_SAFE_DETAIL_MAKE_OP'
constexpr Result operator Op(Other&& lhs, Name<StrongTypedef>&& rhs) \
^
/home/capsel/libs/type_safe/include/type_safe/strong_typedef.hpp:350:9: note: candidate template ignored: could not match
'mixed_equality_comparison<type-parameter-0-0, type-parameter-0-1>' against 'const int'
TYPE_SAFE_DETAIL_MAKE_OP_MIXED(==, mixed_equality_comparison, bool)
^
/home/capsel/libs/type_safe/include/type_safe/strong_typedef.hpp:267:22: note: expanded from macro
'TYPE_SAFE_DETAIL_MAKE_OP_MIXED'
constexpr Result operator Op(const Name<StrongTypedef, OtherArg>& lhs, Other&& rhs) \
^
/home/capsel/libs/type_safe/include/type_safe/strong_typedef.hpp:343:9: error: no matching function for call to 'get_underlying'
TYPE_SAFE_DETAIL_MAKE_OP(==, equality_comparison, bool)
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/home/capsel/libs/type_safe/include/type_safe/strong_typedef.hpp:234:22: note: expanded from macro 'TYPE_SAFE_DETAIL_MAKE_OP'
lhs)) Op detail::get_underlying<StrongTypedef>(detail::forward<Other>(rhs))); \
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/home/capsel/libs/type_safe/build/test/catch.hpp:1040:80: note: in instantiation of function template specialization
'type_safe::strong_typedef_op::operator==<type, const convert_b &, void>' requested here
auto compareEqual( LhsT const& lhs, RhsT const& rhs ) -> bool { return lhs == rhs; };
^
/home/capsel/libs/type_safe/build/test/catch.hpp:1069:51: note: in instantiation of function template specialization
'Catch::compareEqual<type, convert_b>' requested here
return BinaryExpr<LhsT, RhsT const&>( compareEqual( m_lhs, rhs ), m_lhs, "==", rhs );
^
/home/capsel/libs/type_safe/test/strong_typedef.cpp:132:20: note: in instantiation of function template specialization
'Catch::ExprLhs<const type &>::operator==<convert_b>' requested here
REQUIRE(t1 == b);
^
/home/capsel/libs/type_safe/include/type_safe/strong_typedef.hpp:166:61: note: candidate function not viable: no known
conversion from 'const convert_b' to 'const type' for 1st argument
constexpr const underlying_type<StrongTypedef>& get_underlying(
^
/home/capsel/libs/type_safe/include/type_safe/strong_typedef.hpp:173:68: note: candidate function not viable: no known
conversion from 'const convert_b' to 'type' for 1st argument
TYPE_SAFE_CONSTEXPR14 underlying_type<StrongTypedef>&& get_underlying(
^
/home/capsel/libs/type_safe/include/type_safe/strong_typedef.hpp:350:40: error: invalid operands to binary expression
('int' and 'const convert_c')
TYPE_SAFE_DETAIL_MAKE_OP_MIXED(==, mixed_equality_comparison, bool)
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/home/capsel/libs/type_safe/include/type_safe/strong_typedef.hpp:269:67: note: expanded from macro
'TYPE_SAFE_DETAIL_MAKE_OP_MIXED'
return Result(get(static_cast<const StrongTypedef&>(lhs)) Op detail::forward<Other>(rhs)); \
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ^ ~~~~~~~~~~~~~~~~~~~~~~~~~~~
/home/capsel/libs/type_safe/build/test/catch.hpp:1040:80: note: in instantiation of function template specialization
'type_safe::strong_typedef_op::operator==<type, int, const convert_c &, void>' requested here
auto compareEqual( LhsT const& lhs, RhsT const& rhs ) -> bool { return lhs == rhs; };
^
/home/capsel/libs/type_safe/build/test/catch.hpp:1069:51: note: in instantiation of function template specialization
'Catch::compareEqual<type, convert_c>' requested here
return BinaryExpr<LhsT, RhsT const&>( compareEqual( m_lhs, rhs ), m_lhs, "==", rhs );
^
/home/capsel/libs/type_safe/test/strong_typedef.cpp:153:20: note: in instantiation of function template specialization
'Catch::ExprLhs<const type &>::operator==<convert_c>' requested here
REQUIRE(t1 == c);
^
/home/capsel/libs/type_safe/include/type_safe/strong_typedef.hpp:343:9: note: candidate template ignored: could not match
'equality_comparison<type-parameter-0-0>' against 'const int'
TYPE_SAFE_DETAIL_MAKE_OP(==, equality_comparison, bool)
^
/home/capsel/libs/type_safe/include/type_safe/strong_typedef.hpp:199:22: note: expanded from macro 'TYPE_SAFE_DETAIL_MAKE_OP'
constexpr Result operator Op(const Name<StrongTypedef>& lhs, const Name<StrongTypedef>& rhs) \
^
/home/capsel/libs/type_safe/include/type_safe/strong_typedef.hpp:343:9: note: candidate template ignored: could not match
'equality_comparison<type-parameter-0-0>' against 'const int'
/home/capsel/libs/type_safe/include/type_safe/strong_typedef.hpp:207:22: note: expanded from macro 'TYPE_SAFE_DETAIL_MAKE_OP'
constexpr Result operator Op(Name<StrongTypedef>&& lhs, const Name<StrongTypedef>& rhs) \
^
/home/capsel/libs/type_safe/include/type_safe/strong_typedef.hpp:343:9: note: candidate template ignored: could not match
'equality_comparison<type-parameter-0-0>' against 'const int'
/home/capsel/libs/type_safe/include/type_safe/strong_typedef.hpp:215:22: note: expanded from macro 'TYPE_SAFE_DETAIL_MAKE_OP'
constexpr Result operator Op(const Name<StrongTypedef>& lhs, Name<StrongTypedef>&& rhs) \
^
/home/capsel/libs/type_safe/include/type_safe/strong_typedef.hpp:343:9: note: candidate template ignored: could not match
'equality_comparison<type-parameter-0-0>' against 'const int'
/home/capsel/libs/type_safe/include/type_safe/strong_typedef.hpp:222:22: note: expanded from macro 'TYPE_SAFE_DETAIL_MAKE_OP'
constexpr Result operator Op(Name<StrongTypedef>&& lhs, Name<StrongTypedef>&& rhs) \
^
/home/capsel/libs/type_safe/include/type_safe/strong_typedef.hpp:343:9: note: candidate template ignored: could not match
'equality_comparison<type-parameter-0-0>' against 'const int'
/home/capsel/libs/type_safe/include/type_safe/strong_typedef.hpp:231:22: note: expanded from macro 'TYPE_SAFE_DETAIL_MAKE_OP'
constexpr Result operator Op(const Name<StrongTypedef>& lhs, Other&& rhs) \
^
/home/capsel/libs/type_safe/include/type_safe/strong_typedef.hpp:343:9: note: candidate template ignored: could not match
'equality_comparison<type-parameter-0-0>' against 'const int'
/home/capsel/libs/type_safe/include/type_safe/strong_typedef.hpp:239:22: note: expanded from macro 'TYPE_SAFE_DETAIL_MAKE_OP'
constexpr Result operator Op(Name<StrongTypedef>&& lhs, Other&& rhs) \
^
/home/capsel/libs/type_safe/include/type_safe/strong_typedef.hpp:343:9: note: candidate template ignored: could not match
'equality_comparison<type-parameter-0-0>' against 'const convert_c'
/home/capsel/libs/type_safe/include/type_safe/strong_typedef.hpp:247:22: note: expanded from macro 'TYPE_SAFE_DETAIL_MAKE_OP'
constexpr Result operator Op(Other&& lhs, const Name<StrongTypedef>& rhs) \
^
/home/capsel/libs/type_safe/include/type_safe/strong_typedef.hpp:343:9: note: candidate template ignored: could not match
'equality_comparison<type-parameter-0-0>' against 'const convert_c'
/home/capsel/libs/type_safe/include/type_safe/strong_typedef.hpp:256:22: note: expanded from macro 'TYPE_SAFE_DETAIL_MAKE_OP'
constexpr Result operator Op(Other&& lhs, Name<StrongTypedef>&& rhs) \
^
/home/capsel/libs/type_safe/include/type_safe/strong_typedef.hpp:350:9: note: candidate template ignored: could not match
'mixed_equality_comparison<type-parameter-0-0, type-parameter-0-1>' against 'const int'
TYPE_SAFE_DETAIL_MAKE_OP_MIXED(==, mixed_equality_comparison, bool)
^
/home/capsel/libs/type_safe/include/type_safe/strong_typedef.hpp:267:22: note: expanded from macro
'TYPE_SAFE_DETAIL_MAKE_OP_MIXED'
constexpr Result operator Op(const Name<StrongTypedef, OtherArg>& lhs, Other&& rhs) \
^
4 errors generated.
make[2]: *** [test/CMakeFiles/type_safe_test.dir/build.make:519: test/CMakeFiles/type_safe_test.dir/strong_typedef.cpp.o] Error 1
make[1]: *** [CMakeFiles/Makefile2:347: test/CMakeFiles/type_safe_test.dir/all] Error 2
make: *** [Makefile:141: all] Error 2
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment