| 510 | class... Ts |
| 511 | > |
| 512 | constexpr auto call_impl( |
| 513 | const poly_base &self, |
| 514 | std::integral_constant<std::size_t, N>, |
| 515 | type_list<R>, |
| 516 | const TExpr, |
| 517 | Ts &&... args |
| 518 | ) |
| 519 | { |
| 520 | void(typename mappings<I, N>::template set<type_list<TExpr, Ts...> >{}); |
| 521 | return reinterpret_cast<R (*)(void *, Ts...)>(self.vptr[N - 1])( |
| 522 | self.ptr(), std::forward<Ts>(args)...); |
| 523 | } |
| 524 | |
| 525 | template <class I, class T, std::size_t... Ns> |
| 526 | constexpr auto extends_impl(std::index_sequence<Ns...>) noexcept { |