Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- namespace XYZ {
- class Something;
- template<typename T>
- T get_element(Element* e) {
- }
- template<>
- Something get_element(Element* e);
- }
- #include "HelperFunctions.hpp"
- #include "Something.hpp"
- namespace XYZ {
- template<>
- Something get_element(Element* e) {
- return somehow_convert_to_something(e);
- }
- }
- #include "HelperFunctions.hpp"
- namespace XYZ {
- class Something;
- template<typename C, typename D, typename E>
- class SubscriptProxy {
- C m_parent;
- E m_index;
- template<typename T>
- T get_element(Element* e) const {
- return XYZ::get_element<T>(e); // call helper function
- }
- template<typename T>
- bool is(int index, Element*& e) const noexcept {
- Element* parentElement;
- if (!m_parent.template is<Something>(m_index, parentElement)) {
- return false;
- }
- auto d = this->get_element<Something>(parentElement);
- return d.template is<T>(index, e);
- }
- };
- }
- #include "SubscriptProxy.hpp"
- #include "HelperFunctions.hpp"
- namespace XYZ {
- class Something {
- SubscriptProxy<Something, Something, int> operator[] (int index) const noexcept;
- };
- }
- template<typename T>
- bool is(int index, Element*& e) const noexcept {
- Element* parentElement;
- if (!m_parent.template is<Something>(m_index, parentElement)) {
- return false;
- }
- auto d = XYZ::get_element<Something>(parentElement);
- return d.template is<T>(index, e);
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement