From 140a90f72adf8968033f9b7026cbd9bc12320269 Mon Sep 17 00:00:00 2001 From: Jason Turner Date: Fri, 29 Jan 2016 15:35:40 -0700 Subject: [PATCH] Fix g++4.6 build issues --- .../chaiscript/dispatchkit/type_conversions.hpp | 2 +- include/chaiscript/utility/utility.hpp | 14 ++++++++++++-- 2 files changed, 13 insertions(+), 3 deletions(-) diff --git a/include/chaiscript/dispatchkit/type_conversions.hpp b/include/chaiscript/dispatchkit/type_conversions.hpp index 962d7f3..1fcabe9 100644 --- a/include/chaiscript/dispatchkit/type_conversions.hpp +++ b/include/chaiscript/dispatchkit/type_conversions.hpp @@ -319,7 +319,7 @@ namespace chaiscript template struct backingList { static std::initializer_list list; }; template - std::initializer_list backingList::list = { (Vcount)backingValue::value... }; + std::initializer_list backingList::list = { static_cast(backingValue::value)... }; template static typename std::enable_if< sizeof...(Vcount) >= maxLength, diff --git a/include/chaiscript/utility/utility.hpp b/include/chaiscript/utility/utility.hpp index 381afda..fbd8c66 100644 --- a/include/chaiscript/utility/utility.hpp +++ b/include/chaiscript/utility/utility.hpp @@ -69,21 +69,31 @@ namespace chaiscript typename std::enable_if::value, void>::type add_class(ModuleType &t_module, const std::string &t_class_name, - const std::vector::type, std::string>> &t_constants) +#ifdef CHAISCRIPT_GCC_4_6 + const std::vector> &t_constants +#else + const std::vector::type, std::string>> &t_constants +#endif + ) { t_module.add(chaiscript::user_type(), t_class_name); t_module.add(chaiscript::constructor(), t_class_name); t_module.add(chaiscript::constructor(), t_class_name); + using namespace chaiscript::bootstrap::operators; t_module.add([](){ // add some comparison and assignment operators - using namespace chaiscript::bootstrap::operators; return assign(not_equal(equal())); }()); +#ifdef CHAISCRIPT_GCC_4_6 + t_module.add(chaiscript::fun([](const Enum &e, const int &i) { return e == i; }), "=="); + t_module.add(chaiscript::fun([](const int &i, const Enum &e) { return i == e; }), "=="); +#else t_module.add(chaiscript::fun([](const Enum &e, const typename std::underlying_type::type &i) { return e == i; }), "=="); t_module.add(chaiscript::fun([](const typename std::underlying_type::type &i, const Enum &e) { return i == e; }), "=="); +#endif for (const auto &constant : t_constants) {