/* { dg-additional-options "-O0 -fdump-tree-omplower" } */
/* { dg-xfail-if "PR 97106/PR 97102 - .alias not (yet) supported for nvptx" { offload_target_nvptx } } */

#include <cstdlib>
#include <type_traits>

template<int Dim> struct V {
  int version_called;

  template<bool B = (Dim == 0),
           typename = typename std::enable_if<B>::type>
  V ()
  {
    version_called = 1;
  }

  template<typename TArg0,
           typename = typename std::enable_if<(std::is_same<unsigned long,
                                               typename std::decay<TArg0>::type>::value)>::type>
  V (TArg0)
  {
    version_called = 2;
  }
};

template<int Dim> struct S {
  V<Dim> v;
};

int
main ()
{
  int version_set[2] = {-1, -1};

#pragma omp target map(from: version_set[0:2])
  {
    S<0> s;
    version_set[0] = s.v.version_called;
    V<1> v2((unsigned long) 1);
    version_set[1] = v2.version_called;
  }

  if (version_set[0] != 1 || version_set[1] != 2)
    abort ();
  return 0;
}

/* "3" for S<0>::S, V<0>::V<>, and V<1>::V<long unsigned int>:  */
/* { dg-final { scan-tree-dump-times "__attribute__..omp declare target" 3 "omplower" } } */
