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

// Test user-defined literals.
// Test template operator declaration and definition.

#include <cassert>

template<char...>
  int operator"" _abc();

template<>
  int
  operator"" _abc<>()
  { return -1; }

template<>
  int
  operator"" _abc<'L','U','E'>()
  { return 42; }

template<>
  int
  operator"" _abc<'6','6','6'>()
  { return 21; }

void
test1()
{
  int i = operator"" _abc<'1','2','3'>();
  assert(i == 45);
  int universal_meaning = operator"" _abc<'L','U','E'>();
  assert(universal_meaning == 42);
  int b = operator"" _abc<'6','6','6'>();
  int z = operator"" _abc<>();
  assert(z == -1);
  int j = 123_abc;
  assert(j == i);
  int jb = 666_abc;
  assert(jb == b);
}

int
main()
{
  test1();
}

template<char... Chars>
  int operator"" _abc()
  { return 42 + sizeof...(Chars); }
