_features.hpp
Go to the documentation of this file.
00001 
00002 
00003 
00004 
00005 
00006 
00007 
00008 
00009 
00010 
00011 
00012 
00013 
00014 
00015 
00016 
00017 
00018 
00019 
00020 
00021 
00022 
00023 
00024 
00025 
00026 
00027 
00028 
00029 #pragma once
00030 
00031 // #define GLM_CXX98_EXCEPTIONS
00032 // #define GLM_CXX98_RTTI
00033 
00034 // #define GLM_CXX11_RVALUE_REFERENCES
00035 // Rvalue references - GCC 4.3
00036 // http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2006/n2118.html
00037 
00038 // GLM_CXX11_TRAILING_RETURN
00039 // Rvalue references for *this - GCC not supported
00040 // http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2439.htm
00041 
00042 // GLM_CXX11_NONSTATIC_MEMBER_INIT
00043 // Initialization of class objects by rvalues - GCC any
00044 // http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2004/n1610.html
00045 
00046 // GLM_CXX11_NONSTATIC_MEMBER_INIT
00047 // Non-static data member initializers - GCC 4.7
00048 // http://www.open-std.org/JTC1/SC22/WG21/docs/papers/2008/n2756.htm
00049 
00050 // #define GLM_CXX11_VARIADIC_TEMPLATE
00051 // Variadic templates - GCC 4.3
00052 // http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2242.pdf
00053 
00054 // 
00055 // Extending variadic template template parameters - GCC 4.4
00056 // http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2008/n2555.pdf
00057 
00058 // #define GLM_CXX11_GENERALIZED_INITIALIZERS
00059 // Initializer lists - GCC 4.4
00060 // http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2008/n2672.htm
00061 
00062 // #define GLM_CXX11_STATIC_ASSERT 
00063 // Static assertions - GCC 4.3
00064 // http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2004/n1720.html
00065 
00066 // #define GLM_CXX11_AUTO_TYPE
00067 // auto-typed variables - GCC 4.4
00068 // http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2006/n1984.pdf
00069 
00070 // #define GLM_CXX11_AUTO_TYPE
00071 // Multi-declarator auto - GCC 4.4
00072 // http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2004/n1737.pdf
00073 
00074 // #define GLM_CXX11_AUTO_TYPE
00075 // Removal of auto as a storage-class specifier - GCC 4.4
00076 // http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2008/n2546.htm
00077 
00078 // #define GLM_CXX11_AUTO_TYPE
00079 // New function declarator syntax - GCC 4.4
00080 // http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2008/n2541.htm
00081 
00082 // #define GLM_CXX11_LAMBDAS
00083 // New wording for C++0x lambdas - GCC 4.5
00084 // http://www.open-std.org/JTC1/SC22/WG21/docs/papers/2009/n2927.pdf
00085 
00086 // #define GLM_CXX11_DECLTYPE
00087 // Declared type of an expression - GCC 4.3
00088 // http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2343.pdf
00089 
00090 // 
00091 // Right angle brackets - GCC 4.3
00092 // http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2005/n1757.html
00093 
00094 // 
00095 // Default template arguments for function templates    DR226   GCC 4.3
00096 // http://www.open-std.org/jtc1/sc22/wg21/docs/cwg_defects.html#226
00097 
00098 // 
00099 // Solving the SFINAE problem for expressions   DR339   GCC 4.4
00100 // http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2008/n2634.html
00101 
00102 // #define GLM_CXX11_ALIAS_TEMPLATE
00103 // Template aliases     N2258   GCC 4.7
00104 // http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2258.pdf
00105 
00106 // 
00107 // Extern templates     N1987   Yes
00108 // http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2006/n1987.htm
00109 
00110 // #define GLM_CXX11_NULLPTR
00111 // Null pointer constant        N2431   GCC 4.6
00112 // http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2431.pdf
00113 
00114 // #define GLM_CXX11_STRONG_ENUMS
00115 // Strongly-typed enums N2347   GCC 4.4
00116 // http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2347.pdf
00117 
00118 // 
00119 // Forward declarations for enums       N2764   GCC 4.6
00120 // http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2008/n2764.pdf
00121 
00122 // 
00123 // Generalized attributes       N2761   GCC 4.8
00124 // http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2008/n2761.pdf
00125 
00126 // 
00127 // Generalized constant expressions     N2235   GCC 4.6
00128 // http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2235.pdf
00129 
00130 // 
00131 // Alignment support    N2341   GCC 4.8
00132 // http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2341.pdf
00133 
00134 // #define GLM_CXX11_DELEGATING_CONSTRUCTORS
00135 // Delegating constructors      N1986   GCC 4.7
00136 // http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2006/n1986.pdf
00137 
00138 // 
00139 // Inheriting constructors      N2540   GCC 4.8
00140 // http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2008/n2540.htm
00141 
00142 // #define GLM_CXX11_EXPLICIT_CONVERSIONS
00143 // Explicit conversion operators        N2437   GCC 4.5
00144 // http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2437.pdf
00145 
00146 // 
00147 // New character types  N2249   GCC 4.4
00148 // http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2249.html
00149 
00150 // 
00151 // Unicode string literals      N2442   GCC 4.5
00152 // http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2442.htm
00153 
00154 // 
00155 // Raw string literals  N2442   GCC 4.5
00156 // http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2442.htm
00157 
00158 // 
00159 // Universal character name literals    N2170   GCC 4.5
00160 // http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2170.html
00161 
00162 // #define GLM_CXX11_USER_LITERALS
00163 // User-defined literals                N2765   GCC 4.7
00164 // http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2008/n2765.pdf
00165 
00166 // 
00167 // Standard Layout Types        N2342   GCC 4.5
00168 // http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2342.htm
00169 
00170 // #define GLM_CXX11_DEFAULTED_FUNCTIONS
00171 // #define GLM_CXX11_DELETED_FUNCTIONS
00172 // Defaulted and deleted functions      N2346   GCC 4.4
00173 // http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2346.htm
00174 
00175 // 
00176 // Extended friend declarations N1791   GCC 4.7
00177 // http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2005/n1791.pdf
00178 
00179 // 
00180 // Extending sizeof     N2253   GCC 4.4
00181 // http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2253.html
00182 
00183 // #define GLM_CXX11_INLINE_NAMESPACES
00184 // Inline namespaces    N2535   GCC 4.4
00185 // http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2008/n2535.htm
00186 
00187 // #define GLM_CXX11_UNRESTRICTED_UNIONS
00188 // Unrestricted unions  N2544   GCC 4.6
00189 // http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2008/n2544.pdf
00190 
00191 // #define GLM_CXX11_LOCAL_TYPE_TEMPLATE_ARGS
00192 // Local and unnamed types as template arguments        N2657   GCC 4.5
00193 // http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2008/n2657.htm
00194 
00195 // #define GLM_CXX11_RANGE_FOR
00196 // Range-based for      N2930   GCC 4.6
00197 // http://www.open-std.org/JTC1/SC22/WG21/docs/papers/2009/n2930.html
00198 
00199 // #define GLM_CXX11_OVERRIDE_CONTROL
00200 // Explicit virtual overrides   N2928 N3206 N3272       GCC 4.7
00201 // http://www.open-std.org/JTC1/SC22/WG21/docs/papers/2009/n2928.htm
00202 // http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2010/n3206.htm
00203 // http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2011/n3272.htm
00204 
00205 // 
00206 // Minimal support for garbage collection and reachability-based leak detection N2670   No
00207 // http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2008/n2670.htm
00208 
00209 // #define GLM_CXX11_NOEXCEPT
00210 // Allowing move constructors to throw [noexcept]       N3050   GCC 4.6 (core language only)
00211 // http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2010/n3050.html
00212 
00213 // 
00214 // Defining move special member functions       N3053   GCC 4.6
00215 // http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2010/n3053.html
00216 
00217 // 
00218 // Sequence points      N2239   Yes
00219 // http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2239.html
00220 
00221 // 
00222 // Atomic operations    N2427   GCC 4.4
00223 // http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2239.html
00224 
00225 // 
00226 // Strong Compare and Exchange  N2748   GCC 4.5
00227 // http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2427.html
00228 
00229 // 
00230 // Bidirectional Fences N2752   GCC 4.8
00231 // http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2008/n2752.htm
00232 
00233 // 
00234 // Memory model N2429   GCC 4.8
00235 // http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2429.htm
00236 
00237 // 
00238 // Data-dependency ordering: atomics and memory model   N2664   GCC 4.4
00239 // http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2008/n2664.htm
00240 
00241 // 
00242 // Propagating exceptions       N2179   GCC 4.4
00243 // http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2179.html
00244 
00245 // 
00246 // Abandoning a process and at_quick_exit       N2440   GCC 4.8
00247 // http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2440.htm
00248 
00249 // 
00250 // Allow atomics use in signal handlers N2547   Yes
00251 // http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2008/n2547.htm
00252 
00253 // 
00254 // Thread-local storage N2659   GCC 4.8
00255 // http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2008/n2659.htm
00256 
00257 // 
00258 // Dynamic initialization and destruction with concurrency      N2660   GCC 4.3
00259 // http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2008/n2660.htm
00260 
00261 // 
00262 // __func__ predefined identifier       N2340   GCC 4.3
00263 // http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2340.htm
00264 
00265 // 
00266 // C99 preprocessor     N1653   GCC 4.3
00267 // http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2004/n1653.htm
00268 
00269 // 
00270 // long long    N1811   GCC 4.3
00271 // http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2005/n1811.pdf
00272 
00273 // 
00274 // Extended integral types      N1988   Yes
00275 // http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2006/n1988.pdf
00276 
00277 #if(GLM_COMPILER & GLM_COMPILER_GCC)
00278 
00279 #       if(GLM_COMPILER >= GLM_COMPILER_GCC43)
00280 #               define GLM_CXX11_STATIC_ASSERT
00281 #       endif
00282 
00283 #elif(GLM_COMPILER & GLM_COMPILER_CLANG)
00284 #       if(__has_feature(cxx_exceptions))
00285 #               define GLM_CXX98_EXCEPTIONS
00286 #       endif
00287 
00288 #       if(__has_feature(cxx_rtti))
00289 #               define GLM_CXX98_RTTI
00290 #       endif
00291 
00292 #       if(__has_feature(cxx_access_control_sfinae))
00293 #               define GLM_CXX11_ACCESS_CONTROL_SFINAE
00294 #       endif
00295 
00296 #       if(__has_feature(cxx_alias_templates))
00297 #               define GLM_CXX11_ALIAS_TEMPLATE
00298 #       endif
00299 
00300 #       if(__has_feature(cxx_alignas))
00301 #               define GLM_CXX11_ALIGNAS
00302 #       endif
00303 
00304 #       if(__has_feature(cxx_attributes))
00305 #               define GLM_CXX11_ATTRIBUTES
00306 #       endif
00307 
00308 #       if(__has_feature(cxx_constexpr))
00309 #               define GLM_CXX11_CONSTEXPR
00310 #       endif
00311 
00312 #       if(__has_feature(cxx_decltype))
00313 #               define GLM_CXX11_DECLTYPE
00314 #       endif
00315 
00316 #       if(__has_feature(cxx_default_function_template_args))
00317 #               define GLM_CXX11_DEFAULT_FUNCTION_TEMPLATE_ARGS
00318 #       endif
00319 
00320 #       if(__has_feature(cxx_defaulted_functions))
00321 #               define GLM_CXX11_DEFAULTED_FUNCTIONS
00322 #       endif
00323 
00324 #       if(__has_feature(cxx_delegating_constructors))
00325 #               define GLM_CXX11_DELEGATING_CONSTRUCTORS
00326 #       endif
00327 
00328 #       if(__has_feature(cxx_deleted_functions))
00329 #               define GLM_CXX11_DELETED_FUNCTIONS
00330 #       endif
00331 
00332 #       if(__has_feature(cxx_explicit_conversions))
00333 #               define GLM_CXX11_EXPLICIT_CONVERSIONS
00334 #       endif
00335 
00336 #       if(__has_feature(cxx_generalized_initializers))
00337 #               define GLM_CXX11_GENERALIZED_INITIALIZERS
00338 #       endif
00339 
00340 #       if(__has_feature(cxx_implicit_moves))
00341 #               define GLM_CXX11_IMPLICIT_MOVES
00342 #       endif
00343 
00344 #       if(__has_feature(cxx_inheriting_constructors))
00345 #               define GLM_CXX11_INHERITING_CONSTRUCTORS
00346 #       endif
00347 
00348 #       if(__has_feature(cxx_inline_namespaces))
00349 #               define GLM_CXX11_INLINE_NAMESPACES
00350 #       endif
00351 
00352 #       if(__has_feature(cxx_lambdas))
00353 #               define GLM_CXX11_LAMBDAS
00354 #       endif
00355 
00356 #       if(__has_feature(cxx_local_type_template_args))
00357 #               define GLM_CXX11_LOCAL_TYPE_TEMPLATE_ARGS
00358 #       endif
00359 
00360 #       if(__has_feature(cxx_noexcept))
00361 #               define GLM_CXX11_NOEXCEPT
00362 #       endif
00363 
00364 #       if(__has_feature(cxx_nonstatic_member_init))
00365 #               define GLM_CXX11_NONSTATIC_MEMBER_INIT
00366 #       endif
00367 
00368 #       if(__has_feature(cxx_nullptr))
00369 #               define GLM_CXX11_NULLPTR
00370 #       endif
00371 
00372 #       if(__has_feature(cxx_override_control))
00373 #               define GLM_CXX11_OVERRIDE_CONTROL
00374 #       endif
00375 
00376 #       if(__has_feature(cxx_reference_qualified_functions))
00377 #               define GLM_CXX11_REFERENCE_QUALIFIED_FUNCTIONS
00378 #       endif
00379 
00380 #       if(__has_feature(cxx_range_for))
00381 #               define GLM_CXX11_RANGE_FOR
00382 #       endif
00383 
00384 #       if(__has_feature(cxx_raw_string_literals))
00385 #               define GLM_CXX11_RAW_STRING_LITERALS
00386 #       endif
00387 
00388 #       if(__has_feature(cxx_rvalue_references))
00389 #               define GLM_CXX11_RVALUE_REFERENCES
00390 #       endif
00391 
00392 #       if(__has_feature(cxx_static_assert))
00393 #               define GLM_CXX11_STATIC_ASSERT
00394 #       endif
00395 
00396 #       if(__has_feature(cxx_auto_type))
00397 #               define GLM_CXX11_AUTO_TYPE
00398 #       endif
00399 
00400 #       if(__has_feature(cxx_strong_enums))
00401 #               define GLM_CXX11_STRONG_ENUMS
00402 #       endif
00403 
00404 #       if(__has_feature(cxx_trailing_return))
00405 #               define GLM_CXX11_TRAILING_RETURN
00406 #       endif
00407 
00408 #       if(__has_feature(cxx_unicode_literals))
00409 #               define GLM_CXX11_UNICODE_LITERALS
00410 #       endif
00411 
00412 #       if(__has_feature(cxx_unrestricted_unions))
00413 #               define GLM_CXX11_UNRESTRICTED_UNIONS
00414 #       endif
00415 
00416 #       if(__has_feature(cxx_user_literals))
00417 #               define GLM_CXX11_USER_LITERALS
00418 #       endif
00419 
00420 #       if(__has_feature(cxx_variadic_templates))
00421 #               define GLM_CXX11_VARIADIC_TEMPLATES
00422 #       endif
00423 
00424 #endif//(GLM_COMPILER & GLM_COMPILER_CLANG)


rtabmap
Author(s): Mathieu Labbe
autogenerated on Sat Jul 23 2016 11:44:15