Attempt to satisfy G++4.6 and decltype usage

This commit is contained in:
Jason Turner
2014-09-20 08:31:18 -06:00
parent 8c31255012
commit 0e381e333e
2 changed files with 7 additions and 4 deletions

View File

@@ -19,13 +19,13 @@ namespace chaiscript
namespace detail namespace detail
{ {
template<typename L, typename R> template<typename L, typename R>
auto assign(L l, R r) -> decltype((l = r)) auto assign(L l, R r) -> decltype((l = r))
{ {
return (l = r); return (l = r);
} }
template<typename L, typename R> template<typename L, typename R>
auto assign_bitwise_and(L l, R r) -> decltype((l &r)) auto assign_bitwise_and(L l, R r) -> decltype((l &= r))
{ {
return (l &= r); return (l &= r);
} }
@@ -229,7 +229,7 @@ namespace chaiscript
template<typename T> template<typename T>
ModulePtr assign(ModulePtr m = ModulePtr(new Module())) ModulePtr assign(ModulePtr m = ModulePtr(new Module()))
{ {
m->add(chaiscript::fun(&detail::assign<T &, const T&>), "="); m->add(chaiscript::fun(static_cast<T& (*)(T&, const T&)>(&detail::assign<T &, const T&>)), "=");
return m; return m;
} }
@@ -299,7 +299,7 @@ namespace chaiscript
template<typename T> template<typename T>
ModulePtr assign_sum(ModulePtr m = ModulePtr(new Module())) ModulePtr assign_sum(ModulePtr m = ModulePtr(new Module()))
{ {
m->add(chaiscript::fun(&detail::assign_sum<T &, const T&>), "+="); m->add(chaiscript::fun(static_cast<T & (*)(T &, const T&)>(&detail::assign_sum<T &, const T&>)), "+=");
return m; return m;
} }

View File

@@ -2,6 +2,7 @@
#include <chaiscript/chaiscript_defines.hpp> #include <chaiscript/chaiscript_defines.hpp>
#include <chaiscript/dispatchkit/type_info.hpp> #include <chaiscript/dispatchkit/type_info.hpp>
#include <iostream>
#include <cstdlib> #include <cstdlib>
void test_type(const chaiscript::Type_Info &ti, bool t_is_const, bool t_is_pointer, bool t_is_reference, bool t_is_void, void test_type(const chaiscript::Type_Info &ti, bool t_is_const, bool t_is_pointer, bool t_is_reference, bool t_is_void,
@@ -30,5 +31,7 @@ int main()
test_type(chaiscript::user_type<const int *>(), true, true, false, false, false); test_type(chaiscript::user_type<const int *>(), true, true, false, false, false);
test_type(chaiscript::Type_Info(), false, false, false, false, true); test_type(chaiscript::Type_Info(), false, false, false, false, true);
std::cout << "Size of Type_Info " << sizeof(chaiscript::Type_Info) << std::endl;
return EXIT_SUCCESS; return EXIT_SUCCESS;
} }