diff options
author | Emiel Bruijntjes <emiel.bruijntjes@copernica.com> | 2015-02-02 10:13:41 +0100 |
---|---|---|
committer | Emiel Bruijntjes <emiel.bruijntjes@copernica.com> | 2015-02-02 10:13:41 +0100 |
commit | 877c2529e86686cc2005e7a523d061c955a4f468 (patch) | |
tree | b166fa2bfdaba33e6e7608509334baa5329d780e | |
parent | c169085cc9a9eb9c7c911d1b68db1f08a95c0d27 (diff) |
It was reported (see http://www.php-cpp.com/documentation#comment-1830049280) that visual c++ has not support for initializer_lists, well at least old versions of it so not support it (see https://msdn.microsoft.com/en-us/library/hh567368.aspx), so we added a couple of extra checks to ensure that PHP-CPP also compilers on these olders compilers
-rw-r--r-- | include/argument.h | 21 | ||||
-rw-r--r-- | include/array.h | 8 | ||||
-rw-r--r-- | include/value.h | 6 |
3 files changed, 34 insertions, 1 deletions
diff --git a/include/argument.h b/include/argument.h index ddb6390..f45a43a 100644 --- a/include/argument.h +++ b/include/argument.h @@ -144,10 +144,31 @@ private: }; /** + * Old Visual C++ environments do not support initializer lists + */ +#if defined(_MSC_VER) && _MSC_VER < 1800 + +/** + * For old visual c++ compilers, arguments should be passed as vectors + */ +using Arguments = std::vector<Argument>; + +/** + * Other compilers, and visual C++ 2013 do support initializer lists + */ +#else + +/** * A list of arguments can be supplied to methods * @type Arguments */ using Arguments = std::initializer_list<Argument>; + +/** + * End of visual C++ check + */ +#endif + /** * End of namespace diff --git a/include/array.h b/include/array.h index 882670a..02fe4c4 100644 --- a/include/array.h +++ b/include/array.h @@ -57,12 +57,18 @@ public: */ template <typename T> Array(const std::map<std::string,T> &value) : Value(value) {} - + +// old visual c++ environments have no support for initializer lists +# if !defined(_MSC_VER) || _MSC_VER >= 1800 + /** * Constructor from an initializer list * @param value */ Array(const std::initializer_list<Value> &value) : Value(value) {} + +// end of visual c++ check +# endif /** * Destructor diff --git a/include/value.h b/include/value.h index b87574b..2440532 100644 --- a/include/value.h +++ b/include/value.h @@ -81,6 +81,9 @@ public: for (auto &elem : input) setRaw(i++, elem); } + // old visual c++ environments have no support for initializer lists +# if !defined(_MSC_VER) || _MSC_VER >= 1800 + /** * Constructor from an initializer list * @param value @@ -94,6 +97,9 @@ public: // set all elements for (auto &elem : value) setRaw(i++, elem); } + + // end of visual c++ check +# endif /** * Constructor from a map (this will create an associative array) |