Commit 8e451e99 authored by Philip Trettner's avatar Philip Trettner

Updated GLM to 0.9.7.2

parent cbfd4f79
Pipeline #729 passed with stage

Too many changes to show.

To preserve performance only 83 of 83+ files are displayed.

/////////////////////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////////////////////
/// OpenGL Mathematics (glm.g-truc.net) /// OpenGL Mathematics (glm.g-truc.net)
/// ///
/// Copyright (c) 2005 - 2015 G-Truc Creation (www.g-truc.net) /// Copyright (c) 2005 - 2015 G-Truc Creation (www.g-truc.net)
/// Permission is hereby granted, free of charge, to any person obtaining a copy /// Permission is hereby granted, free of charge, to any person obtaining a copy
/// of this software and associated documentation files (the "Software"), to deal /// of this software and associated documentation files (the "Software"), to deal
/// in the Software without restriction, including without limitation the rights /// in the Software without restriction, including without limitation the rights
/// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell /// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
/// copies of the Software, and to permit persons to whom the Software is /// copies of the Software, and to permit persons to whom the Software is
/// furnished to do so, subject to the following conditions: /// furnished to do so, subject to the following conditions:
/// ///
/// The above copyright notice and this permission notice shall be included in /// The above copyright notice and this permission notice shall be included in
/// all copies or substantial portions of the Software. /// all copies or substantial portions of the Software.
/// ///
/// Restrictions: /// Restrictions:
/// By making use of the Software for military purposes, you choose to make /// By making use of the Software for military purposes, you choose to make
/// a Bunny unhappy. /// a Bunny unhappy.
/// ///
/// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR /// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
/// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, /// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
/// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE /// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
/// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER /// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
/// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, /// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
/// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN /// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
/// THE SOFTWARE. /// THE SOFTWARE.
/// ///
/// @ref core /// @ref core
/// @file glm/common.hpp /// @file glm/common.hpp
/// @date 2013-12-24 / 2013-12-24 /// @date 2013-12-24 / 2013-12-24
/// @author Christophe Riccio /// @author Christophe Riccio
/////////////////////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////////////////////
#pragma once #pragma once
#include "detail/func_common.hpp" #include "detail/func_common.hpp"
/////////////////////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////////////////////
/// OpenGL Mathematics (glm.g-truc.net) /// OpenGL Mathematics (glm.g-truc.net)
/// ///
/// Copyright (c) 2005 - 2015 G-Truc Creation (www.g-truc.net) /// Copyright (c) 2005 - 2015 G-Truc Creation (www.g-truc.net)
/// Permission is hereby granted, free of charge, to any person obtaining a copy /// Permission is hereby granted, free of charge, to any person obtaining a copy
/// of this software and associated documentation files (the "Software"), to deal /// of this software and associated documentation files (the "Software"), to deal
/// in the Software without restriction, including without limitation the rights /// in the Software without restriction, including without limitation the rights
/// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell /// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
/// copies of the Software, and to permit persons to whom the Software is /// copies of the Software, and to permit persons to whom the Software is
/// furnished to do so, subject to the following conditions: /// furnished to do so, subject to the following conditions:
/// ///
/// The above copyright notice and this permission notice shall be included in /// The above copyright notice and this permission notice shall be included in
/// all copies or substantial portions of the Software. /// all copies or substantial portions of the Software.
/// ///
/// Restrictions: /// Restrictions:
/// By making use of the Software for military purposes, you choose to make /// By making use of the Software for military purposes, you choose to make
/// a Bunny unhappy. /// a Bunny unhappy.
/// ///
/// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR /// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
/// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, /// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
/// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE /// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
/// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER /// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
/// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, /// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
/// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN /// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
/// THE SOFTWARE. /// THE SOFTWARE.
/// ///
/// @ref core /// @ref core
/// @file glm/detail/_features.hpp /// @file glm/detail/_features.hpp
/// @date 2013-02-20 / 2013-02-20 /// @date 2013-02-20 / 2013-02-20
/// @author Christophe Riccio /// @author Christophe Riccio
/////////////////////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////////////////////
#pragma once #pragma once
// #define GLM_CXX98_EXCEPTIONS // #define GLM_CXX98_EXCEPTIONS
// #define GLM_CXX98_RTTI // #define GLM_CXX98_RTTI
// #define GLM_CXX11_RVALUE_REFERENCES // #define GLM_CXX11_RVALUE_REFERENCES
// Rvalue references - GCC 4.3 // Rvalue references - GCC 4.3
// http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2006/n2118.html // http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2006/n2118.html
// GLM_CXX11_TRAILING_RETURN // GLM_CXX11_TRAILING_RETURN
// Rvalue references for *this - GCC not supported // Rvalue references for *this - GCC not supported
// http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2439.htm // http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2439.htm
// GLM_CXX11_NONSTATIC_MEMBER_INIT // GLM_CXX11_NONSTATIC_MEMBER_INIT
// Initialization of class objects by rvalues - GCC any // Initialization of class objects by rvalues - GCC any
// http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2004/n1610.html // http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2004/n1610.html
// GLM_CXX11_NONSTATIC_MEMBER_INIT // GLM_CXX11_NONSTATIC_MEMBER_INIT
// Non-static data member initializers - GCC 4.7 // Non-static data member initializers - GCC 4.7
// http://www.open-std.org/JTC1/SC22/WG21/docs/papers/2008/n2756.htm // http://www.open-std.org/JTC1/SC22/WG21/docs/papers/2008/n2756.htm
// #define GLM_CXX11_VARIADIC_TEMPLATE // #define GLM_CXX11_VARIADIC_TEMPLATE
// Variadic templates - GCC 4.3 // Variadic templates - GCC 4.3
// http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2242.pdf // http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2242.pdf
// //
// Extending variadic template template parameters - GCC 4.4 // Extending variadic template template parameters - GCC 4.4
// http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2008/n2555.pdf // http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2008/n2555.pdf
// #define GLM_CXX11_GENERALIZED_INITIALIZERS // #define GLM_CXX11_GENERALIZED_INITIALIZERS
// Initializer lists - GCC 4.4 // Initializer lists - GCC 4.4
// http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2008/n2672.htm // http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2008/n2672.htm
// #define GLM_CXX11_STATIC_ASSERT // #define GLM_CXX11_STATIC_ASSERT
// Static assertions - GCC 4.3 // Static assertions - GCC 4.3
// http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2004/n1720.html // http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2004/n1720.html
// #define GLM_CXX11_AUTO_TYPE // #define GLM_CXX11_AUTO_TYPE
// auto-typed variables - GCC 4.4 // auto-typed variables - GCC 4.4
// http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2006/n1984.pdf // http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2006/n1984.pdf
// #define GLM_CXX11_AUTO_TYPE // #define GLM_CXX11_AUTO_TYPE
// Multi-declarator auto - GCC 4.4 // Multi-declarator auto - GCC 4.4
// http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2004/n1737.pdf // http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2004/n1737.pdf
// #define GLM_CXX11_AUTO_TYPE // #define GLM_CXX11_AUTO_TYPE
// Removal of auto as a storage-class specifier - GCC 4.4 // Removal of auto as a storage-class specifier - GCC 4.4
// http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2008/n2546.htm // http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2008/n2546.htm
// #define GLM_CXX11_AUTO_TYPE // #define GLM_CXX11_AUTO_TYPE
// New function declarator syntax - GCC 4.4 // New function declarator syntax - GCC 4.4
// http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2008/n2541.htm // http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2008/n2541.htm
// #define GLM_CXX11_LAMBDAS // #define GLM_CXX11_LAMBDAS
// New wording for C++0x lambdas - GCC 4.5 // New wording for C++0x lambdas - GCC 4.5
// http://www.open-std.org/JTC1/SC22/WG21/docs/papers/2009/n2927.pdf // http://www.open-std.org/JTC1/SC22/WG21/docs/papers/2009/n2927.pdf
// #define GLM_CXX11_DECLTYPE // #define GLM_CXX11_DECLTYPE
// Declared type of an expression - GCC 4.3 // Declared type of an expression - GCC 4.3
// http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2343.pdf // http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2343.pdf
// //
// Right angle brackets - GCC 4.3 // Right angle brackets - GCC 4.3
// http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2005/n1757.html // http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2005/n1757.html
// //
// Default template arguments for function templates DR226 GCC 4.3 // Default template arguments for function templates DR226 GCC 4.3
// http://www.open-std.org/jtc1/sc22/wg21/docs/cwg_defects.html#226 // http://www.open-std.org/jtc1/sc22/wg21/docs/cwg_defects.html#226
// //
// Solving the SFINAE problem for expressions DR339 GCC 4.4 // Solving the SFINAE problem for expressions DR339 GCC 4.4
// http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2008/n2634.html // http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2008/n2634.html
// #define GLM_CXX11_ALIAS_TEMPLATE // #define GLM_CXX11_ALIAS_TEMPLATE
// Template aliases N2258 GCC 4.7 // Template aliases N2258 GCC 4.7
// http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2258.pdf // http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2258.pdf
// //
// Extern templates N1987 Yes // Extern templates N1987 Yes
// http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2006/n1987.htm // http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2006/n1987.htm
// #define GLM_CXX11_NULLPTR // #define GLM_CXX11_NULLPTR
// Null pointer constant N2431 GCC 4.6 // Null pointer constant N2431 GCC 4.6
// http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2431.pdf // http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2431.pdf
// #define GLM_CXX11_STRONG_ENUMS // #define GLM_CXX11_STRONG_ENUMS
// Strongly-typed enums N2347 GCC 4.4 // Strongly-typed enums N2347 GCC 4.4
// http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2347.pdf // http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2347.pdf
// //
// Forward declarations for enums N2764 GCC 4.6 // Forward declarations for enums N2764 GCC 4.6
// http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2008/n2764.pdf // http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2008/n2764.pdf
// //
// Generalized attributes N2761 GCC 4.8 // Generalized attributes N2761 GCC 4.8
// http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2008/n2761.pdf // http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2008/n2761.pdf
// //
// Generalized constant expressions N2235 GCC 4.6 // Generalized constant expressions N2235 GCC 4.6
// http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2235.pdf // http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2235.pdf
// //
// Alignment support N2341 GCC 4.8 // Alignment support N2341 GCC 4.8
// http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2341.pdf // http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2341.pdf
// #define GLM_CXX11_DELEGATING_CONSTRUCTORS // #define GLM_CXX11_DELEGATING_CONSTRUCTORS
// Delegating constructors N1986 GCC 4.7 // Delegating constructors N1986 GCC 4.7
// http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2006/n1986.pdf // http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2006/n1986.pdf
// //
// Inheriting constructors N2540 GCC 4.8 // Inheriting constructors N2540 GCC 4.8
// http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2008/n2540.htm // http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2008/n2540.htm
// #define GLM_CXX11_EXPLICIT_CONVERSIONS // #define GLM_CXX11_EXPLICIT_CONVERSIONS
// Explicit conversion operators N2437 GCC 4.5 // Explicit conversion operators N2437 GCC 4.5
// http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2437.pdf // http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2437.pdf
// //
// New character types N2249 GCC 4.4 // New character types N2249 GCC 4.4
// http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2249.html // http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2249.html
// //
// Unicode string literals N2442 GCC 4.5 // Unicode string literals N2442 GCC 4.5
// http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2442.htm // http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2442.htm
// //
// Raw string literals N2442 GCC 4.5 // Raw string literals N2442 GCC 4.5
// http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2442.htm // http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2442.htm
// //
// Universal character name literals N2170 GCC 4.5 // Universal character name literals N2170 GCC 4.5
// http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2170.html // http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2170.html
// #define GLM_CXX11_USER_LITERALS // #define GLM_CXX11_USER_LITERALS
// User-defined literals N2765 GCC 4.7 // User-defined literals N2765 GCC 4.7
// http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2008/n2765.pdf // http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2008/n2765.pdf
// //
// Standard Layout Types N2342 GCC 4.5 // Standard Layout Types N2342 GCC 4.5
// http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2342.htm // http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2342.htm
// #define GLM_CXX11_DEFAULTED_FUNCTIONS // #define GLM_CXX11_DEFAULTED_FUNCTIONS
// #define GLM_CXX11_DELETED_FUNCTIONS // #define GLM_CXX11_DELETED_FUNCTIONS
// Defaulted and deleted functions N2346 GCC 4.4 // Defaulted and deleted functions N2346 GCC 4.4
// http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2346.htm // http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2346.htm
// //
// Extended friend declarations N1791 GCC 4.7 // Extended friend declarations N1791 GCC 4.7
// http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2005/n1791.pdf // http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2005/n1791.pdf
// //
// Extending sizeof N2253 GCC 4.4 // Extending sizeof N2253 GCC 4.4
// http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2253.html // http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2253.html
// #define GLM_CXX11_INLINE_NAMESPACES // #define GLM_CXX11_INLINE_NAMESPACES
// Inline namespaces N2535 GCC 4.4 // Inline namespaces N2535 GCC 4.4
// http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2008/n2535.htm // http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2008/n2535.htm
// #define GLM_CXX11_UNRESTRICTED_UNIONS // #define GLM_CXX11_UNRESTRICTED_UNIONS
// Unrestricted unions N2544 GCC 4.6 // Unrestricted unions N2544 GCC 4.6
// http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2008/n2544.pdf // http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2008/n2544.pdf
// #define GLM_CXX11_LOCAL_TYPE_TEMPLATE_ARGS // #define GLM_CXX11_LOCAL_TYPE_TEMPLATE_ARGS
// Local and unnamed types as template arguments N2657 GCC 4.5 // Local and unnamed types as template arguments N2657 GCC 4.5
// http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2008/n2657.htm // http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2008/n2657.htm
// #define GLM_CXX11_RANGE_FOR // #define GLM_CXX11_RANGE_FOR
// Range-based for N2930 GCC 4.6 // Range-based for N2930 GCC 4.6
// http://www.open-std.org/JTC1/SC22/WG21/docs/papers/2009/n2930.html // http://www.open-std.org/JTC1/SC22/WG21/docs/papers/2009/n2930.html
// #define GLM_CXX11_OVERRIDE_CONTROL // #define GLM_CXX11_OVERRIDE_CONTROL
// Explicit virtual overrides N2928 N3206 N3272 GCC 4.7 // Explicit virtual overrides N2928 N3206 N3272 GCC 4.7
// http://www.open-std.org/JTC1/SC22/WG21/docs/papers/2009/n2928.htm // http://www.open-std.org/JTC1/SC22/WG21/docs/papers/2009/n2928.htm
// http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2010/n3206.htm // http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2010/n3206.htm
// http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2011/n3272.htm // http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2011/n3272.htm
// //
// Minimal support for garbage collection and reachability-based leak detection N2670 No // Minimal support for garbage collection and reachability-based leak detection N2670 No
// http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2008/n2670.htm // http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2008/n2670.htm
// #define GLM_CXX11_NOEXCEPT // #define GLM_CXX11_NOEXCEPT
// Allowing move constructors to throw [noexcept] N3050 GCC 4.6 (core language only) // Allowing move constructors to throw [noexcept] N3050 GCC 4.6 (core language only)
// http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2010/n3050.html // http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2010/n3050.html
// //
// Defining move special member functions N3053 GCC 4.6 // Defining move special member functions N3053 GCC 4.6
// http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2010/n3053.html // http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2010/n3053.html
// //
// Sequence points N2239 Yes // Sequence points N2239 Yes
// http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2239.html // http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2239.html
// //
// Atomic operations N2427 GCC 4.4 // Atomic operations N2427 GCC 4.4
// http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2239.html // http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2239.html
// //
// Strong Compare and Exchange N2748 GCC 4.5 // Strong Compare and Exchange N2748 GCC 4.5
// http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2427.html // http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2427.html
// //
// Bidirectional Fences N2752 GCC 4.8 // Bidirectional Fences N2752 GCC 4.8
// http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2008/n2752.htm // http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2008/n2752.htm
// //
// Memory model N2429 GCC 4.8 // Memory model N2429 GCC 4.8
// http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2429.htm // http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2429.htm
// //
// Data-dependency ordering: atomics and memory model N2664 GCC 4.4 // Data-dependency ordering: atomics and memory model N2664 GCC 4.4
// http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2008/n2664.htm // http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2008/n2664.htm
// //
// Propagating exceptions N2179 GCC 4.4 // Propagating exceptions N2179 GCC 4.4
// http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2179.html // http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2179.html
// //
// Abandoning a process and at_quick_exit N2440 GCC 4.8 // Abandoning a process and at_quick_exit N2440 GCC 4.8
// http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2440.htm // http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2440.htm
// //
// Allow atomics use in signal handlers N2547 Yes // Allow atomics use in signal handlers N2547 Yes
// http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2008/n2547.htm // http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2008/n2547.htm
// //
// Thread-local storage N2659 GCC 4.8 // Thread-local storage N2659 GCC 4.8
// http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2008/n2659.htm // http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2008/n2659.htm
// //
// Dynamic initialization and destruction with concurrency N2660 GCC 4.3 // Dynamic initialization and destruction with concurrency N2660 GCC 4.3
// http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2008/n2660.htm // http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2008/n2660.htm
// //
// __func__ predefined identifier N2340 GCC 4.3 // __func__ predefined identifier N2340 GCC 4.3
// http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2340.htm // http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2340.htm
// //
// C99 preprocessor N1653 GCC 4.3 // C99 preprocessor N1653 GCC 4.3
// http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2004/n1653.htm // http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2004/n1653.htm
// //
// long long N1811 GCC 4.3 // long long N1811 GCC 4.3
// http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2005/n1811.pdf // http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2005/n1811.pdf
// //
// Extended integral types N1988 Yes // Extended integral types N1988 Yes
// http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2006/n1988.pdf // http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2006/n1988.pdf
#if(GLM_COMPILER & GLM_COMPILER_GCC) #if(GLM_COMPILER & GLM_COMPILER_GCC)
# if(GLM_COMPILER >= GLM_COMPILER_GCC43) # if(GLM_COMPILER >= GLM_COMPILER_GCC43)
# define GLM_CXX11_STATIC_ASSERT # define GLM_CXX11_STATIC_ASSERT
# endif # endif
#elif(GLM_COMPILER & (GLM_COMPILER_APPLE_CLANG | GLM_COMPILER_LLVM)) #elif(GLM_COMPILER & (GLM_COMPILER_APPLE_CLANG | GLM_COMPILER_LLVM))
# if(__has_feature(cxx_exceptions)) # if(__has_feature(cxx_exceptions))
# define GLM_CXX98_EXCEPTIONS # define GLM_CXX98_EXCEPTIONS
# endif # endif
# if(__has_feature(cxx_rtti)) # if(__has_feature(cxx_rtti))
# define GLM_CXX98_RTTI # define GLM_CXX98_RTTI
# endif # endif
# if(__has_feature(cxx_access_control_sfinae)) # if(__has_feature(cxx_access_control_sfinae))
# define GLM_CXX11_ACCESS_CONTROL_SFINAE # define GLM_CXX11_ACCESS_CONTROL_SFINAE
# endif # endif
# if(__has_feature(cxx_alias_templates)) # if(__has_feature(cxx_alias_templates))
# define GLM_CXX11_ALIAS_TEMPLATE # define GLM_CXX11_ALIAS_TEMPLATE
# endif # endif
# if(__has_feature(cxx_alignas)) # if(__has_feature(cxx_alignas))
# define GLM_CXX11_ALIGNAS # define GLM_CXX11_ALIGNAS
# endif # endif
# if(__has_feature(cxx_attributes)) # if(__has_feature(cxx_attributes))
# define GLM_CXX11_ATTRIBUTES # define GLM_CXX11_ATTRIBUTES
# endif # endif
# if(__has_feature(cxx_constexpr)) # if(__has_feature(cxx_constexpr))
# define GLM_CXX11_CONSTEXPR # define GLM_CXX11_CONSTEXPR
# endif # endif
# if(__has_feature(cxx_decltype)) # if(__has_feature(cxx_decltype))
# define GLM_CXX11_DECLTYPE # define GLM_CXX11_DECLTYPE
# endif # endif
# if(__has_feature(cxx_default_function_template_args)) # if(__has_feature(cxx_default_function_template_args))
# define GLM_CXX11_DEFAULT_FUNCTION_TEMPLATE_ARGS # define GLM_CXX11_DEFAULT_FUNCTION_TEMPLATE_ARGS
# endif # endif
# if(__has_feature(cxx_defaulted_functions)) # if(__has_feature(cxx_defaulted_functions))
# define GLM_CXX11_DEFAULTED_FUNCTIONS # define GLM_CXX11_DEFAULTED_FUNCTIONS
# endif # endif
# if(__has_feature(cxx_delegating_constructors)) # if(__has_feature(cxx_delegating_constructors))
# define GLM_CXX11_DELEGATING_CONSTRUCTORS # define GLM_CXX11_DELEGATING_CONSTRUCTORS
# endif # endif
# if(__has_feature(cxx_deleted_functions)) # if(__has_feature(cxx_deleted_functions))
# define GLM_CXX11_DELETED_FUNCTIONS # define GLM_CXX11_DELETED_FUNCTIONS
# endif # endif
# if(__has_feature(cxx_explicit_conversions)) # if(__has_feature(cxx_explicit_conversions))
# define GLM_CXX11_EXPLICIT_CONVERSIONS # define GLM_CXX11_EXPLICIT_CONVERSIONS
# endif # endif
# if(__has_feature(cxx_generalized_initializers)) # if(__has_feature(cxx_generalized_initializers))
# define GLM_CXX11_GENERALIZED_INITIALIZERS # define GLM_CXX11_GENERALIZED_INITIALIZERS
# endif # endif
# if(__has_feature(cxx_implicit_moves)) # if(__has_feature(cxx_implicit_moves))
# define GLM_CXX11_IMPLICIT_MOVES # define GLM_CXX11_IMPLICIT_MOVES
# endif # endif
# if(__has_feature(cxx_inheriting_constructors)) # if(__has_feature(cxx_inheriting_constructors))
# define GLM_CXX11_INHERITING_CONSTRUCTORS # define GLM_CXX11_INHERITING_CONSTRUCTORS
# endif # endif
# if(__has_feature(cxx_inline_namespaces)) # if(__has_feature(cxx_inline_namespaces))
# define GLM_CXX11_INLINE_NAMESPACES # define GLM_CXX11_INLINE_NAMESPACES
# endif # endif
# if(__has_feature(cxx_lambdas)) # if(__has_feature(cxx_lambdas))
# define GLM_CXX11_LAMBDAS # define GLM_CXX11_LAMBDAS
# endif # endif
# if(__has_feature(cxx_local_type_template_args)) # if(__has_feature(cxx_local_type_template_args))
# define GLM_CXX11_LOCAL_TYPE_TEMPLATE_ARGS # define GLM_CXX11_LOCAL_TYPE_TEMPLATE_ARGS
# endif # endif
# if(__has_feature(cxx_noexcept)) # if(__has_feature(cxx_noexcept))
# define GLM_CXX11_NOEXCEPT # define GLM_CXX11_NOEXCEPT
# endif # endif