Cleanup: add hint that typedef is used as compiler bug workaround
https://developercommunity.visualstudio.com/t/Alias-template-inside-fold-expression-fa/10040507
This commit is contained in:
@@ -67,6 +67,7 @@ inline void execute_lazy_function_eagerly_impl(
|
||||
(
|
||||
[&]() {
|
||||
constexpr size_t I = InIndices;
|
||||
/* Use `typedef` instead of `using` to work around a compiler bug. */
|
||||
typedef Inputs T;
|
||||
const CPPType &type = CPPType::get<T>();
|
||||
input_pointers[I] = {type, &std::get<I>(inputs)};
|
||||
@@ -75,6 +76,7 @@ inline void execute_lazy_function_eagerly_impl(
|
||||
(
|
||||
[&]() {
|
||||
constexpr size_t I = OutIndices;
|
||||
/* Use `typedef` instead of `using` to work around a compiler bug. */
|
||||
typedef Outputs T;
|
||||
const CPPType &type = CPPType::get<T>();
|
||||
output_pointers[I] = {type, std::get<I>(outputs)};
|
||||
|
||||
@@ -207,6 +207,7 @@ void execute_materialized(TypeSequence<ParamTags...> /* param_tags */,
|
||||
(
|
||||
/* Setup information for all parameters. */
|
||||
[&] {
|
||||
/* Use `typedef` instead of `using` to work around a compiler bug. */
|
||||
typedef ParamTags ParamTag;
|
||||
typedef typename ParamTag::base_type T;
|
||||
[[maybe_unused]] ArgInfo<ParamTags> &arg_info = std::get<I>(args_info);
|
||||
@@ -282,6 +283,7 @@ void execute_materialized(TypeSequence<ParamTags...> /* param_tags */,
|
||||
(
|
||||
/* Destruct values that have been materialized before. */
|
||||
[&] {
|
||||
/* Use `typedef` instead of `using` to work around a compiler bug. */
|
||||
typedef ParamTags ParamTag;
|
||||
typedef typename ParamTag::base_type T;
|
||||
[[maybe_unused]] ArgInfo<ParamTags> &arg_info = std::get<I>(args_info);
|
||||
@@ -298,6 +300,7 @@ void execute_materialized(TypeSequence<ParamTags...> /* param_tags */,
|
||||
(
|
||||
/* Destruct buffers for single value inputs. */
|
||||
[&] {
|
||||
/* Use `typedef` instead of `using` to work around a compiler bug. */
|
||||
typedef ParamTags ParamTag;
|
||||
typedef typename ParamTag::base_type T;
|
||||
[[maybe_unused]] ArgInfo<ParamTags> &arg_info = std::get<I>(args_info);
|
||||
@@ -347,6 +350,7 @@ template<typename... ParamTags> class CustomMF : public MultiFunction {
|
||||
(
|
||||
/* Get all parameters from #params and store them in #retrieved_params. */
|
||||
[&]() {
|
||||
/* Use `typedef` instead of `using` to work around a compiler bug. */
|
||||
typedef typename TagsSequence::template at_index<I> ParamTag;
|
||||
typedef typename ParamTag::base_type T;
|
||||
|
||||
@@ -402,6 +406,7 @@ template<typename... ParamTags> class CustomMF : public MultiFunction {
|
||||
(
|
||||
/* Loop over all parameter types and add an entry for each in the signature. */
|
||||
[&] {
|
||||
/* Use `typedef` instead of `using` to work around a compiler bug. */
|
||||
typedef typename TagsSequence::template at_index<I> ParamTag;
|
||||
signature.add(ParamTag(), "");
|
||||
}(),
|
||||
|
||||
Reference in New Issue
Block a user