// { dg-do run { target c++11 } }

// Test user-defined literals.
// Test simple operator declaration and definition in namespaces.

#include <cmath>
#include <limits>

namespace Long
{
  long double operator"" _LL(long double);
}

namespace Short
{
  short
  operator"" _SS(long double x)
  { return std::fmod(x, static_cast<long double>(std::numeric_limits<short>::max())); }
}

void
test1()
{
  long double x = Long::operator "" _LL(1.2L);

  using namespace Short;
  short s = operator"" _SS(1.2L);
  short s2 = 1.2_SS;
}

int
main()
{
  test1();
}

namespace Long
{
  long double
  operator"" _LL(long double x)
  { return x + 2.0L; }
}
