- move `CGAL_WARNING` in `<CGAL/config.h>`,
- create the macro `CGAL_pragma_warning`,
- use `CGAL_pragma_warning` to simplify `<CGAL/license/lgpl.h>` and
`<CGAL/license/gpl.h.in>`.
- add messages in `include/CGAL/license/generate_files.cmake`
- add test files, that do nothing but can be modified to check errors
and warning.
If Boost implementation of thread local storage is used, the order of
destructors is reversed, compared to C++11 `static thread_local`. The
solution for CORE `MemoryPool<T>` is to make the static variable a
static member of the class, and initialize the pointer only inside the
function. That ensures that the destructor will be called after the
destructor of local static variables.
In order to be future compatible I added the suffix "_0" for "with 0 arguments"
The version without suffix will later get the suffix "_1"
I don't do that now, as there are many open branches to modify
We can do that once they are in master.
`BOOST_HAS_VARIADIC_TMPL` and `BOOST_NO_CXX11_VARIADIC_TEMPLATES` can be
wrong, with Boost-1.57 and gcc>=5.0.
Fixes the following warnings with gcc>=5.0 in C++98 mode:
> CGAL-4.8-Ic-106/include/CGAL/array.h:78:31: warning: variadic templates only available with -std=c++11 or -std=gnu++11
> template< typename T, typename... Args >
> ^
> CGAL-4.8-Ic-106/include/CGAL/array.h:80:28: warning: variadic templates only available with -std=c++11 or -std=gnu++11
> cpp11::array< T, 1 + sizeof...(Args) >
> ^
> CGAL-4.8-Ic-106/include/CGAL/array.h:81:42: warning: variadic templates only available with -std=c++11 or -std=gnu++11
> make_array(const T & t, const Args & ... args)
> ^
The implementation is simplified.
If no implementation of `::atomic` is available, `CGAL_NO_ATOMIC` is
defined to an error message (replaced the `#error`).
- Change the way the macros `CGAL_CAN_USE_CXX11_THREAD_LOCAL` and
`CGAL_CAN_USE_CXX11_MUTEX` are defined, so that other compilers are
also supported.
- Add the macro `CGAL_CAN_USE_CXX11_ATOMIC` and the header
`<CGAL/atomic.h>`.
The deprecated names may be removed from future versions of Boost, and
we do not want our C++11 support be dropped for users using newest
versions of Boost.
This macro is always defined. Its value will be true when assertions are defined
and false when assertions are not defined. This macro can then be used in place
of a true false constant, such as is needed for CGAL_NOEXCEPT.