 |
MeshLib C++ Docs
|
Loading...
Searching...
No Matches
Go to the documentation of this file.
6#define MR_STR(...) MR_STR_(__VA_ARGS__)
7#define MR_STR_(...) #__VA_ARGS__
10#define MR_IDENTITY(...) __VA_ARGS__
13#define MR_END(...) DETAIL_MR_END(__VA_ARGS__)
14#define DETAIL_MR_END(...) __VA_ARGS__##_END
17#define MR_CONCAT( a, b ) MR_CONCAT_( a, b )
18#define MR_CONCAT_( a, b ) a ## b
25#if __cpp_concepts && __has_include(<concepts>) && !(defined(__clang__) && __clang_major__ <= 14) && !(defined(__GNUC__) && !defined(__clang__) && __GNUC__ <= 12)
26# define MR_HAS_REQUIRES 1
27# define MR_REQUIRES_IF_SUPPORTED(...) requires(__VA_ARGS__)
28# define MR_SAME_TYPE_TEMPLATE_PARAM(target_, name_) std::same_as<target_> name_ = target_
30# define MR_HAS_REQUIRES 0
31# define MR_REQUIRES_IF_SUPPORTED(...)
32# define MR_SAME_TYPE_TEMPLATE_PARAM(target_, name_) typename name_ = target_
37#define MR_NO_UNIQUE_ADDRESS [[msvc::no_unique_address]]
39#define MR_NO_UNIQUE_ADDRESS [[no_unique_address]]
44#if defined(_MSC_VER) && !defined(__clang__) && (!defined(_MSVC_TRADITIONAL) || _MSVC_TRADITIONAL == 1)
45#define MR_LEGACY_MSVC_PREPROCESSOR 1
47#define MR_LEGACY_MSVC_PREPROCESSOR 0
51#if MR_LEGACY_MSVC_PREPROCESSOR
52#define MR_TRIM_LEADING_COMMA(...) DETAIL_MR_TRIM_LEADING_COMMA_ DETAIL_MR_TRIM_LEADING_COMMA_DEFER(__VA_ARGS__)
53#define DETAIL_MR_TRIM_LEADING_COMMA_DEFER
55#define MR_TRIM_LEADING_COMMA(...) DETAIL_MR_TRIM_LEADING_COMMA_(__VA_ARGS__)
57#define DETAIL_MR_TRIM_LEADING_COMMA_(x, ...) DETAIL_MR_TRIM_LEADING_COMMA_EMPTY(x) __VA_ARGS__
58#define DETAIL_MR_TRIM_LEADING_COMMA_EMPTY()