template<typename T>
constexpr int get(T vec) {
  return vec.get();
}

struct coord {
  constexpr int get() const { return x; }
  int x;
};

struct foo {
    struct coord2 {
      constexpr int get() const { return x; }
      int x;
    };
    constexpr static coord f = { 5 };
    constexpr static int g = get(f); // works

    constexpr static coord2 h = { 5 };
};

constexpr coord foo::f;
constexpr foo::coord2 foo::h;

int main()
{
    constexpr static int i = get(foo::h); // doesn't work
    
}