// I, Howard Hinnant, hereby place this code in the public domain.

// Test overload resolution among reference types

// { dg-do compile { target c++11 } }
// { dg-skip-if "packed attribute missing for struct one/three/five/seven" { "epiphany-*-*" } }

template <bool> struct sa;
template <> struct sa<true> {};

struct one   {long x[1];};
struct two   {long x[2];};
struct three {long x[3];};
struct four  {long x[4];};
struct five  {long x[5];};
struct six   {long x[6];};
struct seven {long x[7];};
struct eight {long x[8];};

struct A
{
    A();
    A(const volatile A&&);
};

               A    source();
const          A  c_source();
      volatile A  v_source(); // { dg-warning "deprecated" "" { target c++2a } }
const volatile A cv_source(); // { dg-warning "deprecated" "" { target c++2a } }

// 6 at a time

one   sink_6_123456(               A&);
two   sink_6_123456(const          A&);
three sink_6_123456(volatile       A&);
four  sink_6_123456(const volatile A&);
five  sink_6_123456(               A&&);
six   sink_6_123456(const          A&&);

int test6_123456()
{
                   A a;
    const          A ca;
          volatile A va;
    const volatile A cva;
    sa<sizeof(sink_6_123456(a))           == 1 * sizeof(long)> t1;
    sa<sizeof(sink_6_123456(ca))          == 2 * sizeof(long)> t2;
    sa<sizeof(sink_6_123456(va))          == 3 * sizeof(long)> t3;
    sa<sizeof(sink_6_123456(cva))         == 4 * sizeof(long)> t4;
    sa<sizeof(sink_6_123456(source()))    == 5 * sizeof(long)> t5;
    sa<sizeof(sink_6_123456(c_source()))  == 6 * sizeof(long)> t6;
    return 0;
}

one   sink_6_123457(               A&);
two   sink_6_123457(const          A&);
three sink_6_123457(volatile       A&);
four  sink_6_123457(const volatile A&);
five  sink_6_123457(               A&&);
seven sink_6_123457(volatile       A&&);

int test6_123457()
{
                   A a;
    const          A ca;
          volatile A va;
    const volatile A cva;
    sa<sizeof(sink_6_123457(a))           == 1 * sizeof(long)> t1;
    sa<sizeof(sink_6_123457(ca))          == 2 * sizeof(long)> t2;
    sa<sizeof(sink_6_123457(va))          == 3 * sizeof(long)> t3;
    sa<sizeof(sink_6_123457(cva))         == 4 * sizeof(long)> t4;
    sa<sizeof(sink_6_123457(source()))    == 5 * sizeof(long)> t5;
    sa<sizeof(sink_6_123457(c_source()))  == 2 * sizeof(long)> t6;
    sa<sizeof(sink_6_123457(v_source()))  == 7 * sizeof(long)> t7;
    return 0;
}

one   sink_6_123458(               A&);
two   sink_6_123458(const          A&);
three sink_6_123458(volatile       A&);
four  sink_6_123458(const volatile A&);
five  sink_6_123458(               A&&);
eight sink_6_123458(const volatile A&&);

int test6_123458()
{
                   A a;
    const          A ca;
          volatile A va;
    const volatile A cva;
    sa<sizeof(sink_6_123458(a))           == 1 * sizeof(long)> t1;
    sa<sizeof(sink_6_123458(ca))          == 2 * sizeof(long)> t2;
    sa<sizeof(sink_6_123458(va))          == 3 * sizeof(long)> t3;
    sa<sizeof(sink_6_123458(cva))         == 4 * sizeof(long)> t4;
    sa<sizeof(sink_6_123458(source()))    == 5 * sizeof(long)> t5;
    sa<sizeof(sink_6_123458(c_source()))  == 8 * sizeof(long)> t6;
    sa<sizeof(sink_6_123458(v_source()))  == 8 * sizeof(long)> t7;
    sa<sizeof(sink_6_123458(cv_source())) == 8 * sizeof(long)> t8;
    return 0;
}

one   sink_6_123467(               A&);
two   sink_6_123467(const          A&);
three sink_6_123467(volatile       A&);
four  sink_6_123467(const volatile A&);
six   sink_6_123467(const          A&&);
seven sink_6_123467(volatile       A&&);

int test6_123467()
{
                   A a;
    const          A ca;
          volatile A va;
    const volatile A cva;
    sa<sizeof(sink_6_123467(a))           == 1 * sizeof(long)> t1;
    sa<sizeof(sink_6_123467(ca))          == 2 * sizeof(long)> t2;
    sa<sizeof(sink_6_123467(va))          == 3 * sizeof(long)> t3;
    sa<sizeof(sink_6_123467(cva))         == 4 * sizeof(long)> t4;
    sa<sizeof(sink_6_123467(c_source()))  == 6 * sizeof(long)> t6;
    sa<sizeof(sink_6_123467(v_source()))  == 7 * sizeof(long)> t7;
    return 0;
}

one   sink_6_123468(               A&);
two   sink_6_123468(const          A&);
three sink_6_123468(volatile       A&);
four  sink_6_123468(const volatile A&);
six   sink_6_123468(const          A&&);
eight sink_6_123468(const volatile A&&);

int test6_123468()
{
                   A a;
    const          A ca;
          volatile A va;
    const volatile A cva;
    sa<sizeof(sink_6_123468(a))           == 1 * sizeof(long)> t1;
    sa<sizeof(sink_6_123468(ca))          == 2 * sizeof(long)> t2;
    sa<sizeof(sink_6_123468(va))          == 3 * sizeof(long)> t3;
    sa<sizeof(sink_6_123468(cva))         == 4 * sizeof(long)> t4;
    sa<sizeof(sink_6_123468(source()))    == 6 * sizeof(long)> t5;
    sa<sizeof(sink_6_123468(c_source()))  == 6 * sizeof(long)> t6;
    sa<sizeof(sink_6_123468(v_source()))  == 8 * sizeof(long)> t7;
    sa<sizeof(sink_6_123468(cv_source())) == 8 * sizeof(long)> t8;
    return 0;
}

one   sink_6_123478(               A&);
two   sink_6_123478(const          A&);
three sink_6_123478(volatile       A&);
four  sink_6_123478(const volatile A&);
seven sink_6_123478(volatile       A&&);
eight sink_6_123478(const volatile A&&);

int test6_123478()
{
                   A a;
    const          A ca;
          volatile A va;
    const volatile A cva;
    sa<sizeof(sink_6_123478(a))           == 1 * sizeof(long)> t1;
    sa<sizeof(sink_6_123478(ca))          == 2 * sizeof(long)> t2;
    sa<sizeof(sink_6_123478(va))          == 3 * sizeof(long)> t3;
    sa<sizeof(sink_6_123478(cva))         == 4 * sizeof(long)> t4;
    sa<sizeof(sink_6_123478(source()))    == 7 * sizeof(long)> t5;
    sa<sizeof(sink_6_123478(c_source()))  == 8 * sizeof(long)> t6;
    sa<sizeof(sink_6_123478(v_source()))  == 7 * sizeof(long)> t7;
    sa<sizeof(sink_6_123478(cv_source())) == 8 * sizeof(long)> t8;
    return 0;
}

one   sink_6_123567(               A&);
two   sink_6_123567(const          A&);
three sink_6_123567(volatile       A&);
five  sink_6_123567(               A&&);
six   sink_6_123567(const          A&&);
seven sink_6_123567(volatile       A&&);

int test6_123567()
{
                   A a;
    const          A ca;
          volatile A va;
    const volatile A cva;
    sa<sizeof(sink_6_123567(a))           == 1 * sizeof(long)> t1;
    sa<sizeof(sink_6_123567(ca))          == 2 * sizeof(long)> t2;
    sa<sizeof(sink_6_123567(va))          == 3 * sizeof(long)> t3;
    sa<sizeof(sink_6_123567(source()))    == 5 * sizeof(long)> t5;
    sa<sizeof(sink_6_123567(c_source()))  == 6 * sizeof(long)> t6;
    sa<sizeof(sink_6_123567(v_source()))  == 7 * sizeof(long)> t7;
    return 0;
}

one   sink_6_123568(               A&);
two   sink_6_123568(const          A&);
three sink_6_123568(volatile       A&);
five  sink_6_123568(               A&&);
six   sink_6_123568(const          A&&);
eight sink_6_123568(const volatile A&&);

int test6_123568()
{
                   A a;
    const          A ca;
          volatile A va;
    const volatile A cva;
    sa<sizeof(sink_6_123568(a))           == 1 * sizeof(long)> t1;
    sa<sizeof(sink_6_123568(ca))          == 2 * sizeof(long)> t2;
    sa<sizeof(sink_6_123568(va))          == 3 * sizeof(long)> t3;
    sa<sizeof(sink_6_123568(source()))    == 5 * sizeof(long)> t5;
    sa<sizeof(sink_6_123568(c_source()))  == 6 * sizeof(long)> t6;
    sa<sizeof(sink_6_123568(v_source()))  == 8 * sizeof(long)> t7;
    sa<sizeof(sink_6_123568(cv_source())) == 8 * sizeof(long)> t8;
    return 0;
}

one   sink_6_123578(               A&);
two   sink_6_123578(const          A&);
three sink_6_123578(volatile       A&);
five  sink_6_123578(               A&&);
seven sink_6_123578(volatile       A&&);
eight sink_6_123578(const volatile A&&);

int test6_123578()
{
                   A a;
    const          A ca;
          volatile A va;
    const volatile A cva;
    sa<sizeof(sink_6_123578(a))           == 1 * sizeof(long)> t1;
    sa<sizeof(sink_6_123578(ca))          == 2 * sizeof(long)> t2;
    sa<sizeof(sink_6_123578(va))          == 3 * sizeof(long)> t3;
    sa<sizeof(sink_6_123578(source()))    == 5 * sizeof(long)> t5;
    sa<sizeof(sink_6_123578(c_source()))  == 8 * sizeof(long)> t6;
    sa<sizeof(sink_6_123578(v_source()))  == 7 * sizeof(long)> t7;
    sa<sizeof(sink_6_123578(cv_source())) == 8 * sizeof(long)> t8;
    return 0;
}

one   sink_6_123678(               A&);
two   sink_6_123678(const          A&);
three sink_6_123678(volatile       A&);
six   sink_6_123678(const          A&&);
seven sink_6_123678(volatile       A&&);
eight sink_6_123678(const volatile A&&);

int test6_123678()
{
                   A a;
    const          A ca;
          volatile A va;
    const volatile A cva;
    sa<sizeof(sink_6_123678(a))           == 1 * sizeof(long)> t1;
    sa<sizeof(sink_6_123678(ca))          == 2 * sizeof(long)> t2;
    sa<sizeof(sink_6_123678(va))          == 3 * sizeof(long)> t3;
    sa<sizeof(sink_6_123678(c_source()))  == 6 * sizeof(long)> t6;
    sa<sizeof(sink_6_123678(v_source()))  == 7 * sizeof(long)> t7;
    sa<sizeof(sink_6_123678(cv_source())) == 8 * sizeof(long)> t8;
    return 0;
}

one   sink_6_124567(               A&);
two   sink_6_124567(const          A&);
four  sink_6_124567(const volatile A&);
five  sink_6_124567(               A&&);
six   sink_6_124567(const          A&&);
seven sink_6_124567(volatile       A&&);

int test6_124567()
{
                   A a;
    const          A ca;
          volatile A va;
    const volatile A cva;
    sa<sizeof(sink_6_124567(a))           == 1 * sizeof(long)> t1;
    sa<sizeof(sink_6_124567(ca))          == 2 * sizeof(long)> t2;
    sa<sizeof(sink_6_124567(va))          == 4 * sizeof(long)> t3;
    sa<sizeof(sink_6_124567(cva))         == 4 * sizeof(long)> t4;
    sa<sizeof(sink_6_124567(source()))    == 5 * sizeof(long)> t5;
    sa<sizeof(sink_6_124567(c_source()))  == 6 * sizeof(long)> t6;
    sa<sizeof(sink_6_124567(v_source()))  == 7 * sizeof(long)> t7;
    return 0;
}

one   sink_6_124568(               A&);
two   sink_6_124568(const          A&);
four  sink_6_124568(const volatile A&);
five  sink_6_124568(               A&&);
six   sink_6_124568(const          A&&);
eight sink_6_124568(const volatile A&&);

int test6_124568()
{
                   A a;
    const          A ca;
          volatile A va;
    const volatile A cva;
    sa<sizeof(sink_6_124568(a))           == 1 * sizeof(long)> t1;
    sa<sizeof(sink_6_124568(ca))          == 2 * sizeof(long)> t2;
    sa<sizeof(sink_6_124568(va))          == 4 * sizeof(long)> t3;
    sa<sizeof(sink_6_124568(cva))         == 4 * sizeof(long)> t4;
    sa<sizeof(sink_6_124568(source()))    == 5 * sizeof(long)> t5;
    sa<sizeof(sink_6_124568(c_source()))  == 6 * sizeof(long)> t6;
    sa<sizeof(sink_6_124568(v_source()))  == 8 * sizeof(long)> t7;
    sa<sizeof(sink_6_124568(cv_source())) == 8 * sizeof(long)> t8;
    return 0;
}

one   sink_6_124578(               A&);
two   sink_6_124578(const          A&);
four  sink_6_124578(const volatile A&);
five  sink_6_124578(               A&&);
seven sink_6_124578(volatile       A&&);
eight sink_6_124578(const volatile A&&);

int test6_124578()
{
                   A a;
    const          A ca;
          volatile A va;
    const volatile A cva;
    sa<sizeof(sink_6_124578(a))           == 1 * sizeof(long)> t1;
    sa<sizeof(sink_6_124578(ca))          == 2 * sizeof(long)> t2;
    sa<sizeof(sink_6_124578(va))          == 4 * sizeof(long)> t3;
    sa<sizeof(sink_6_124578(cva))         == 4 * sizeof(long)> t4;
    sa<sizeof(sink_6_124578(source()))    == 5 * sizeof(long)> t5;
    sa<sizeof(sink_6_124578(c_source()))  == 8 * sizeof(long)> t6;
    sa<sizeof(sink_6_124578(v_source()))  == 7 * sizeof(long)> t7;
    sa<sizeof(sink_6_124578(cv_source())) == 8 * sizeof(long)> t8;
    return 0;
}

one   sink_6_124678(               A&);
two   sink_6_124678(const          A&);
four  sink_6_124678(const volatile A&);
six   sink_6_124678(const          A&&);
seven sink_6_124678(volatile       A&&);
eight sink_6_124678(const volatile A&&);

int test6_124678()
{
                   A a;
    const          A ca;
          volatile A va;
    const volatile A cva;
    sa<sizeof(sink_6_124678(a))           == 1 * sizeof(long)> t1;
    sa<sizeof(sink_6_124678(ca))          == 2 * sizeof(long)> t2;
    sa<sizeof(sink_6_124678(va))          == 4 * sizeof(long)> t3;
    sa<sizeof(sink_6_124678(cva))         == 4 * sizeof(long)> t4;
    sa<sizeof(sink_6_124678(c_source()))  == 6 * sizeof(long)> t6;
    sa<sizeof(sink_6_124678(v_source()))  == 7 * sizeof(long)> t7;
    sa<sizeof(sink_6_124678(cv_source())) == 8 * sizeof(long)> t8;
    return 0;
}

one   sink_6_125678(               A&);
two   sink_6_125678(const          A&);
five  sink_6_125678(               A&&);
six   sink_6_125678(const          A&&);
seven sink_6_125678(volatile       A&&);
eight sink_6_125678(const volatile A&&);

int test6_125678()
{
                   A a;
    const          A ca;
          volatile A va;
    const volatile A cva;
    sa<sizeof(sink_6_125678(a))           == 1 * sizeof(long)> t1;
    sa<sizeof(sink_6_125678(ca))          == 2 * sizeof(long)> t2;
    sa<sizeof(sink_6_125678(source()))    == 5 * sizeof(long)> t5;
    sa<sizeof(sink_6_125678(c_source()))  == 6 * sizeof(long)> t6;
    sa<sizeof(sink_6_125678(v_source()))  == 7 * sizeof(long)> t7;
    sa<sizeof(sink_6_125678(cv_source())) == 8 * sizeof(long)> t8;
    return 0;
}

one   sink_6_134567(               A&);
three sink_6_134567(volatile       A&);
four  sink_6_134567(const volatile A&);
five  sink_6_134567(               A&&);
six   sink_6_134567(const          A&&);
seven sink_6_134567(volatile       A&&);

int test6_134567()
{
                   A a;
    const          A ca;
          volatile A va;
    const volatile A cva;
    sa<sizeof(sink_6_134567(a))           == 1 * sizeof(long)> t1;
    sa<sizeof(sink_6_134567(ca))          == 4 * sizeof(long)> t2;
    sa<sizeof(sink_6_134567(va))          == 3 * sizeof(long)> t3;
    sa<sizeof(sink_6_134567(cva))         == 4 * sizeof(long)> t4;
    sa<sizeof(sink_6_134567(source()))    == 5 * sizeof(long)> t5;
    sa<sizeof(sink_6_134567(c_source()))  == 6 * sizeof(long)> t6;
    sa<sizeof(sink_6_134567(v_source()))  == 7 * sizeof(long)> t7;
    return 0;
}

one   sink_6_134568(               A&);
three sink_6_134568(volatile       A&);
four  sink_6_134568(const volatile A&);
five  sink_6_134568(               A&&);
six   sink_6_134568(const          A&&);
eight sink_6_134568(const volatile A&&);

int test6_134568()
{
                   A a;
    const          A ca;
          volatile A va;
    const volatile A cva;
    sa<sizeof(sink_6_134568(a))           == 1 * sizeof(long)> t1;
    sa<sizeof(sink_6_134568(ca))          == 4 * sizeof(long)> t2;
    sa<sizeof(sink_6_134568(va))          == 3 * sizeof(long)> t3;
    sa<sizeof(sink_6_134568(cva))         == 4 * sizeof(long)> t4;
    sa<sizeof(sink_6_134568(source()))    == 5 * sizeof(long)> t5;
    sa<sizeof(sink_6_134568(c_source()))  == 6 * sizeof(long)> t6;
    sa<sizeof(sink_6_134568(v_source()))  == 8 * sizeof(long)> t7;
    sa<sizeof(sink_6_134568(cv_source())) == 8 * sizeof(long)> t8;
    return 0;
}

one   sink_6_134578(               A&);
three sink_6_134578(volatile       A&);
four  sink_6_134578(const volatile A&);
five  sink_6_134578(               A&&);
seven sink_6_134578(volatile       A&&);
eight sink_6_134578(const volatile A&&);

int test6_134578()
{
                   A a;
    const          A ca;
          volatile A va;
    const volatile A cva;
    sa<sizeof(sink_6_134578(a))           == 1 * sizeof(long)> t1;
    sa<sizeof(sink_6_134578(ca))          == 4 * sizeof(long)> t2;
    sa<sizeof(sink_6_134578(va))          == 3 * sizeof(long)> t3;
    sa<sizeof(sink_6_134578(cva))         == 4 * sizeof(long)> t4;
    sa<sizeof(sink_6_134578(source()))    == 5 * sizeof(long)> t5;
    sa<sizeof(sink_6_134578(c_source()))  == 8 * sizeof(long)> t6;
    sa<sizeof(sink_6_134578(v_source()))  == 7 * sizeof(long)> t7;
    sa<sizeof(sink_6_134578(cv_source())) == 8 * sizeof(long)> t8;
    return 0;
}

one   sink_6_134678(               A&);
three sink_6_134678(volatile       A&);
four  sink_6_134678(const volatile A&);
six   sink_6_134678(const          A&&);
seven sink_6_134678(volatile       A&&);
eight sink_6_134678(const volatile A&&);

int test6_134678()
{
                   A a;
    const          A ca;
          volatile A va;
    const volatile A cva;
    sa<sizeof(sink_6_134678(a))           == 1 * sizeof(long)> t1;
    sa<sizeof(sink_6_134678(ca))          == 4 * sizeof(long)> t2;
    sa<sizeof(sink_6_134678(va))          == 3 * sizeof(long)> t3;
    sa<sizeof(sink_6_134678(cva))         == 4 * sizeof(long)> t4;
    sa<sizeof(sink_6_134678(c_source()))  == 6 * sizeof(long)> t6;
    sa<sizeof(sink_6_134678(v_source()))  == 7 * sizeof(long)> t7;
    sa<sizeof(sink_6_134678(cv_source())) == 8 * sizeof(long)> t8;
    return 0;
}

one   sink_6_135678(               A&);
three sink_6_135678(volatile       A&);
five  sink_6_135678(               A&&);
six   sink_6_135678(const          A&&);
seven sink_6_135678(volatile       A&&);
eight sink_6_135678(const volatile A&&);

int test6_135678()
{
                   A a;
    const          A ca;
          volatile A va;
    const volatile A cva;
    sa<sizeof(sink_6_135678(a))           == 1 * sizeof(long)> t1;
    sa<sizeof(sink_6_135678(va))          == 3 * sizeof(long)> t3;
    sa<sizeof(sink_6_135678(source()))    == 5 * sizeof(long)> t5;
    sa<sizeof(sink_6_135678(c_source()))  == 6 * sizeof(long)> t6;
    sa<sizeof(sink_6_135678(v_source()))  == 7 * sizeof(long)> t7;
    sa<sizeof(sink_6_135678(cv_source())) == 8 * sizeof(long)> t8;
    return 0;
}

one   sink_6_145678(               A&);
four  sink_6_145678(const volatile A&);
five  sink_6_145678(               A&&);
six   sink_6_145678(const          A&&);
seven sink_6_145678(volatile       A&&);
eight sink_6_145678(const volatile A&&);

int test6_145678()
{
                   A a;
    const          A ca;
          volatile A va;
    const volatile A cva;
    sa<sizeof(sink_6_145678(a))           == 1 * sizeof(long)> t1;
    sa<sizeof(sink_6_145678(ca))          == 4 * sizeof(long)> t2;
    sa<sizeof(sink_6_145678(va))          == 4 * sizeof(long)> t3;
    sa<sizeof(sink_6_145678(cva))         == 4 * sizeof(long)> t4;
    sa<sizeof(sink_6_145678(source()))    == 5 * sizeof(long)> t5;
    sa<sizeof(sink_6_145678(c_source()))  == 6 * sizeof(long)> t6;
    sa<sizeof(sink_6_145678(v_source()))  == 7 * sizeof(long)> t7;
    sa<sizeof(sink_6_145678(cv_source())) == 8 * sizeof(long)> t8;
    return 0;
}

two   sink_6_234567(const          A&);
three sink_6_234567(volatile       A&);
four  sink_6_234567(const volatile A&);
five  sink_6_234567(               A&&);
six   sink_6_234567(const          A&&);
seven sink_6_234567(volatile       A&&);

int test6_234567()
{
                   A a;
    const          A ca;
          volatile A va;
    const volatile A cva;
    sa<sizeof(sink_6_234567(ca))          == 2 * sizeof(long)> t2;
    sa<sizeof(sink_6_234567(va))          == 3 * sizeof(long)> t3;
    sa<sizeof(sink_6_234567(cva))         == 4 * sizeof(long)> t4;
    sa<sizeof(sink_6_234567(source()))    == 5 * sizeof(long)> t5;
    sa<sizeof(sink_6_234567(c_source()))  == 6 * sizeof(long)> t6;
    sa<sizeof(sink_6_234567(v_source()))  == 7 * sizeof(long)> t7;
    return 0;
}

two   sink_6_234568(const          A&);
three sink_6_234568(volatile       A&);
four  sink_6_234568(const volatile A&);
five  sink_6_234568(               A&&);
six   sink_6_234568(const          A&&);
eight sink_6_234568(const volatile A&&);

int test6_234568()
{
                   A a;
    const          A ca;
          volatile A va;
    const volatile A cva;
    sa<sizeof(sink_6_234568(ca))          == 2 * sizeof(long)> t2;
    sa<sizeof(sink_6_234568(va))          == 3 * sizeof(long)> t3;
    sa<sizeof(sink_6_234568(cva))         == 4 * sizeof(long)> t4;
    sa<sizeof(sink_6_234568(source()))    == 5 * sizeof(long)> t5;
    sa<sizeof(sink_6_234568(c_source()))  == 6 * sizeof(long)> t6;
    sa<sizeof(sink_6_234568(v_source()))  == 8 * sizeof(long)> t7;
    sa<sizeof(sink_6_234568(cv_source())) == 8 * sizeof(long)> t8;
    return 0;
}

two   sink_6_234578(const          A&);
three sink_6_234578(volatile       A&);
four  sink_6_234578(const volatile A&);
five  sink_6_234578(               A&&);
seven sink_6_234578(volatile       A&&);
eight sink_6_234578(const volatile A&&);

int test6_234578()
{
                   A a;
    const          A ca;
          volatile A va;
    const volatile A cva;
    sa<sizeof(sink_6_234578(ca))          == 2 * sizeof(long)> t2;
    sa<sizeof(sink_6_234578(va))          == 3 * sizeof(long)> t3;
    sa<sizeof(sink_6_234578(cva))         == 4 * sizeof(long)> t4;
    sa<sizeof(sink_6_234578(source()))    == 5 * sizeof(long)> t5;
    sa<sizeof(sink_6_234578(c_source()))  == 8 * sizeof(long)> t6;
    sa<sizeof(sink_6_234578(v_source()))  == 7 * sizeof(long)> t7;
    sa<sizeof(sink_6_234578(cv_source())) == 8 * sizeof(long)> t8;
    return 0;
}

two   sink_6_234678(const          A&);
three sink_6_234678(volatile       A&);
four  sink_6_234678(const volatile A&);
six   sink_6_234678(const          A&&);
seven sink_6_234678(volatile       A&&);
eight sink_6_234678(const volatile A&&);

int test6_234678()
{
                   A a;
    const          A ca;
          volatile A va;
    const volatile A cva;
    sa<sizeof(sink_6_234678(ca))          == 2 * sizeof(long)> t2;
    sa<sizeof(sink_6_234678(va))          == 3 * sizeof(long)> t3;
    sa<sizeof(sink_6_234678(cva))         == 4 * sizeof(long)> t4;
    sa<sizeof(sink_6_234678(c_source()))  == 6 * sizeof(long)> t6;
    sa<sizeof(sink_6_234678(v_source()))  == 7 * sizeof(long)> t7;
    sa<sizeof(sink_6_234678(cv_source())) == 8 * sizeof(long)> t8;
    return 0;
}

two   sink_6_235678(const          A&);
three sink_6_235678(volatile       A&);
five  sink_6_235678(               A&&);
six   sink_6_235678(const          A&&);
seven sink_6_235678(volatile       A&&);
eight sink_6_235678(const volatile A&&);

int test6_235678()
{
                   A a;
    const          A ca;
          volatile A va;
    const volatile A cva;
    sa<sizeof(sink_6_235678(ca))          == 2 * sizeof(long)> t2;
    sa<sizeof(sink_6_235678(va))          == 3 * sizeof(long)> t3;
    sa<sizeof(sink_6_235678(source()))    == 5 * sizeof(long)> t5;
    sa<sizeof(sink_6_235678(c_source()))  == 6 * sizeof(long)> t6;
    sa<sizeof(sink_6_235678(v_source()))  == 7 * sizeof(long)> t7;
    sa<sizeof(sink_6_235678(cv_source())) == 8 * sizeof(long)> t8;
    return 0;
}

two   sink_6_245678(const          A&);
four  sink_6_245678(const volatile A&);
five  sink_6_245678(               A&&);
six   sink_6_245678(const          A&&);
seven sink_6_245678(volatile       A&&);
eight sink_6_245678(const volatile A&&);

int test6_245678()
{
                   A a;
    const          A ca;
          volatile A va;
    const volatile A cva;
    sa<sizeof(sink_6_245678(a))           == 2 * sizeof(long)> t1;
    sa<sizeof(sink_6_245678(ca))          == 2 * sizeof(long)> t2;
    sa<sizeof(sink_6_245678(va))          == 4 * sizeof(long)> t3;
    sa<sizeof(sink_6_245678(cva))         == 4 * sizeof(long)> t4;
    sa<sizeof(sink_6_245678(source()))    == 5 * sizeof(long)> t5;
    sa<sizeof(sink_6_245678(c_source()))  == 6 * sizeof(long)> t6;
    sa<sizeof(sink_6_245678(v_source()))  == 7 * sizeof(long)> t7;
    sa<sizeof(sink_6_245678(cv_source())) == 8 * sizeof(long)> t8;
    return 0;
}

three sink_6_345678(volatile       A&);
four  sink_6_345678(const volatile A&);
five  sink_6_345678(               A&&);
six   sink_6_345678(const          A&&);
seven sink_6_345678(volatile       A&&);
eight sink_6_345678(const volatile A&&);

int test6_345678()
{
                   A a;
    const          A ca;
          volatile A va;
    const volatile A cva;
    sa<sizeof(sink_6_345678(a))           == 3 * sizeof(long)> t1;
    sa<sizeof(sink_6_345678(ca))          == 4 * sizeof(long)> t2;
    sa<sizeof(sink_6_345678(va))          == 3 * sizeof(long)> t3;
    sa<sizeof(sink_6_345678(cva))         == 4 * sizeof(long)> t4;
    sa<sizeof(sink_6_345678(source()))    == 5 * sizeof(long)> t5;
    sa<sizeof(sink_6_345678(c_source()))  == 6 * sizeof(long)> t6;
    sa<sizeof(sink_6_345678(v_source()))  == 7 * sizeof(long)> t7;
    sa<sizeof(sink_6_345678(cv_source())) == 8 * sizeof(long)> t8;
    return 0;
}

int main()
{
    return test6_123456() + test6_123457() + test6_123458() + test6_123467() +
           test6_123468() + test6_123478() + test6_123567() + test6_123568() +
           test6_123578() + test6_123678() + test6_124567() + test6_124568() +
           test6_124578() + test6_124678() + test6_125678() + test6_134567() +
           test6_134568() + test6_134578() + test6_134678() + test6_135678() +
           test6_145678() + test6_234567() + test6_234568() + test6_234578() +
           test6_234678() + test6_235678() + test6_245678() + test6_345678();
}
