* Trinity::new_from_tuple - same as std::make_from_tuple except allocates object using "new"
* Trinity::is_tuple - detects whether given type is a tuple specialization
* advstd::type_identity - C++20 std::type_identity
# Conflicts:
# src/common/Utilities/Tuples.h
* Combat/Threat rewrite (PR #19930) prep work. Mostly refactors, and a compatibility layer on ThreatManager/HostileReference that allows scripts to be changed already.
* Core/Threads: Replace Boost TLS with C++11 one
Replace boost::thread_specific_ptr<T> thread-local storage with C++11 thread_local to remove libboost_thread dependency from common project
* Fix no-pch build
* Build system: Support new in cmake 3.17 Ninja Multi-Config generator
(cherry picked from commit 369b618d4f)
* Build system: Fixed PCH with MSVC & Ninja generator
(cherry picked from commit d669f46b6d)
* Core: Fix clang 10 warnings
(cherry picked from commit 7272508cb4)
* Build system: Set -Wno-deprecated-copy only for clang 10
(cherry picked from commit 7fdeb259ba)
* Core/Misc: GCC build and warning fixes
(cherry picked from commit 4d69cc1c56)
* Build system: Print found git version when warning about it being too old
(cherry picked from commit 1ae72db201)
* Build system: Removed hard requirement on BOOST_ROOT being set as environment variable, it can now be also passed as command line argument to cmake and fix compile warning with boost 1.73
(cherry picked from commit 161944b764)
* Remove some code that was already removed from 335 and then cherry-picked into master
Co-authored-by: Shauren <shauren.trinity@gmail.com>
(cherry picked from commit 8c09b6e58b)
* Core/Spells: Implementation of DoT clipping.
* Core/Utilities: Backport "EnumFlags v3.0" from master.
* Core/Spells: Switch AURA_REMOVE_MODE to a flag set.
Replace the output string when a UTF-8 conversion error happen with an error message instead of using an empty string, swallowing any message that the caller wanted to log.
- Detect the arguments accepted by the command handler
- Tokenize out those arguments automatically and feed them to the handler
- Unmatched rest of the string can be accepted by trailing char const* or CommandArgs*
* Move IteratorPair to its own header
* Add AsUnderlyingType function to cast enum value to its underlying type (avoids repeating std::underlying_type everywhere)
* Added MapGetValuePtr to allow writing `if (Val* v = MapGetValuePtr(map, key))`
* Added utility IteratorPair class with begin/end methods and MapEqualRange for use in range for syntax with multimaps
(cherry picked from commit a1e3b54e07)