fix msvc compilation

This commit is contained in:
BlackMATov
2021-07-05 00:10:46 +07:00
parent 7df45ed270
commit ac98bc1e8b
2 changed files with 18 additions and 6 deletions

View File

@@ -85,8 +85,12 @@ namespace meta_hpp
template < typename... Args > template < typename... Args >
std::optional<value> invoke(Args&&... args) const { std::optional<value> invoke(Args&&... args) const {
std::array<value, sizeof...(Args)> vargs{{std::forward<Args>(args)...}}; if constexpr ( sizeof...(Args) > 0u ) {
std::array<value, sizeof...(Args)> vargs{std::forward<Args>(args)...};
return invoke_(vargs.data(), vargs.size()); return invoke_(vargs.data(), vargs.size());
} else {
return invoke_(nullptr, 0u);
}
} }
template < typename F > template < typename F >

View File

@@ -142,14 +142,22 @@ namespace meta_hpp
template < typename... Args > template < typename... Args >
std::optional<value> invoke(void* instance, Args&&... args) const { std::optional<value> invoke(void* instance, Args&&... args) const {
std::array<value, sizeof...(Args)> vargs{{std::forward<Args>(args)...}}; if constexpr ( sizeof...(Args) > 0u ) {
std::array<value, sizeof...(Args)> vargs{std::forward<Args>(args)...};
return invoke_(instance, vargs.data(), vargs.size()); return invoke_(instance, vargs.data(), vargs.size());
} else {
return invoke_(instance, nullptr, 0u);
}
} }
template < typename... Args > template < typename... Args >
std::optional<value> invoke(const void* instance, Args&&... args) const { std::optional<value> invoke(const void* instance, Args&&... args) const {
std::array<value, sizeof...(Args)> vargs{{std::forward<Args>(args)...}}; if constexpr ( sizeof...(Args) > 0u ) {
std::array<value, sizeof...(Args)> vargs{std::forward<Args>(args)...};
return cinvoke_(instance, vargs.data(), vargs.size()); return cinvoke_(instance, vargs.data(), vargs.size());
} else {
return cinvoke_(instance, nullptr, 0u);
}
} }
template < typename F > template < typename F >