Add __builtin_constant_p for gcc build without optimizations
This commit is contained in:
parent
f7ecbd6d20
commit
cfb5f82948
3 changed files with 5 additions and 7 deletions
|
@ -3,8 +3,8 @@
|
|||
#include <utempl/type_list.hpp>
|
||||
|
||||
struct SomeStruct {
|
||||
constexpr SomeStruct(auto&& arg) {
|
||||
arg.Method(42);
|
||||
explicit constexpr SomeStruct(auto&& arg) {
|
||||
arg.Method(42); // NOLINT
|
||||
};
|
||||
};
|
||||
|
||||
|
@ -15,15 +15,13 @@ struct Injector {
|
|||
|
||||
template <typename T, auto... Args>
|
||||
inline constexpr auto Use() {
|
||||
std::ignore = T{Args...};
|
||||
std::ignore = __builtin_constant_p(T{Args...});
|
||||
};
|
||||
|
||||
template <typename...>
|
||||
consteval auto Ignore() {};
|
||||
|
||||
|
||||
auto main() -> int {
|
||||
Ignore<decltype(Use<SomeStruct, Injector{}>())>();
|
||||
static_assert(std::is_same_v<decltype(Magic(utempl::loopholes::Getter<0>{})), utempl::TypeList<int>>);
|
||||
};
|
||||
|
||||
|
|
|
@ -6,5 +6,5 @@ check_required_components("@PROJECT_NAME@")
|
|||
try_compile(loopholes_body_inject
|
||||
SOURCES "${CMAKE_CURRENT_LIST_DIR}/check.cpp")
|
||||
if(NOT loopholes_body_inject)
|
||||
message(FATAL_ERROR "The Compiler Doesn't Support Retrieval Of Information Via Loopholes. If You Are Using gcc, Enable Optimizations.")
|
||||
message(FATAL_ERROR "The Compiler Doesn't Support Retrieval Of Information Via Loopholes.")
|
||||
endif()
|
||||
|
|
|
@ -336,7 +336,7 @@ struct DependencyInfoKey {};
|
|||
|
||||
template <typename T, auto... Args>
|
||||
inline constexpr auto Use() {
|
||||
std::ignore = T{Args...};
|
||||
std::ignore = __builtin_constant_p(T{Args...});
|
||||
};
|
||||
|
||||
template <typename...>
|
||||
|
|
Loading…
Reference in a new issue