Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- // MatrixMeta.hpp
- #include <tuple>
- template <size_t x = 0>
- class M;
- // Note, if this is removed the problem disappears
- namespace meta
- {
- inline auto f()
- {
- return std::make_tuple();
- }
- template <size_t x, typename ... Args>
- auto f(const M<x>& , Args && ... args)
- {
- return f(args...);
- }
- template <typename ... Args>
- auto f(const M<>& first, Args && ... args)
- {
- return std::tuple_cat(std::make_tuple(first), f(args...));
- }
- }
- // Matrix.hpp
- template <size_t x>
- class M{};
- template <>
- class M<0>{};
- // main.cpp
- int main(int, char* [])
- {
- M<1> a;
- M<> b;
- return std::tuple_size<decltype(meta::f(a, b, b))>::value; // (0, 0)
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement