Skip to content

Commit 62c6bf0

Browse files
committed
implements template magic for is_convertible on make_leaf_node function
1 parent 6463541 commit 62c6bf0

File tree

1 file changed

+6
-4
lines changed

1 file changed

+6
-4
lines changed

tests/expression_tree_leaf_node.cpp

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -6,14 +6,16 @@ using namespace attwoodn::expression_tree;
66

77
struct test_fixture {
88
std::string some_string;
9+
char* some_char_ptr;
910
};
1011

1112
template<class T> struct type_id{typedef T type;};
1213

13-
// template<typename Obj, typename CompValue, typename Op = typename type_id<bool (*)(CompValue*, CompValue*)>::type>
14-
// node::expression_tree_leaf_node<Obj, Op, CompValue>* make_leaf_node( CompValue Obj::* member_var, Op op, CompValue comp_value ) {
15-
// return new node::expression_tree_leaf_node<Obj, Op, CompValue>( member_var, op, comp_value );
16-
// }
14+
template<typename Obj, typename CompValue, typename Op = typename type_id<bool (*)(CompValue*, CompValue*)>::type,
15+
typename std::enable_if<std::is_convertible<CompValue, CompValue*>::value, int>::type = 0>
16+
node::expression_tree_leaf_node<Obj, Op, CompValue>* make_leaf_node( CompValue Obj::* member_var, Op op, CompValue comp_value ) {
17+
return new node::expression_tree_leaf_node<Obj, Op, CompValue>( member_var, op, comp_value );
18+
}
1719

1820
template<typename Obj, typename CompValue, typename Op = typename type_id<bool (*)(CompValue, CompValue)>::type>
1921
node::expression_tree_leaf_node<Obj, Op, CompValue>* make_leaf_node( CompValue Obj::* member_var, Op op, CompValue comp_value ) {

0 commit comments

Comments
 (0)