mirror of
https://github.com/IfcOpenShell/IfcOpenShell.git
synced 2026-09-19 14:41:25 +00:00
template as
This commit is contained in:
@@ -90,18 +90,18 @@ auto get_related(T t, F f, G g) {
|
|||||||
std::vector<V> acc;
|
std::vector<V> acc;
|
||||||
for (auto& u : li) {
|
for (auto& u : li) {
|
||||||
try {
|
try {
|
||||||
auto vs = (u.as<U>().*g)();
|
auto vs = (u.template as<U>().*g)();
|
||||||
if constexpr (std::is_base_of_v<express::Base, decltype(vs)>) {
|
if constexpr (std::is_base_of_v<express::Base, decltype(vs)>) {
|
||||||
if (auto vv = vs.as<V>()) {
|
if (auto vv = vs.template as<V>()) {
|
||||||
acc.push_back(vv);
|
acc.push_back(vv);
|
||||||
}
|
}
|
||||||
} else if constexpr (std::is_base_of_v<express::Select, decltype(vs)>) {
|
} else if constexpr (std::is_base_of_v<express::Select, decltype(vs)>) {
|
||||||
if (auto vv = vs.concrete().as<V>()) {
|
if (auto vv = vs.concrete().template as<V>()) {
|
||||||
acc.push_back(vv);
|
acc.push_back(vv);
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
for (auto& v : vs) {
|
for (auto& v : vs) {
|
||||||
if (auto vv = v.as<V>()) {
|
if (auto vv = v.template as<V>()) {
|
||||||
acc.push_back(vv);
|
acc.push_back(vv);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -222,18 +222,18 @@ auto get_related(T t, F f, G g) {
|
|||||||
std::vector<V> acc;
|
std::vector<V> acc;
|
||||||
for (auto& u : li) {
|
for (auto& u : li) {
|
||||||
try {
|
try {
|
||||||
auto vs = (u.as<U>().*g)();
|
auto vs = (u.template as<U>().*g)();
|
||||||
if constexpr (std::is_base_of_v<express::Base, decltype(vs)>) {
|
if constexpr (std::is_base_of_v<express::Base, decltype(vs)>) {
|
||||||
if (auto vv = vs.as<V>()) {
|
if (auto vv = vs.template as<V>()) {
|
||||||
acc.push_back(vv);
|
acc.push_back(vv);
|
||||||
}
|
}
|
||||||
} else if constexpr (std::is_base_of_v<express::Select, decltype(vs)>) {
|
} else if constexpr (std::is_base_of_v<express::Select, decltype(vs)>) {
|
||||||
if (auto vv = vs.concrete().as<V>()) {
|
if (auto vv = vs.concrete().template as<V>()) {
|
||||||
acc.push_back(vv);
|
acc.push_back(vv);
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
for (auto& v : vs) {
|
for (auto& v : vs) {
|
||||||
if (auto vv = v.as<V>()) {
|
if (auto vv = v.template as<V>()) {
|
||||||
acc.push_back(vv);
|
acc.push_back(vv);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user