//!ASMDeclarationTest
//%CPP
asm("movl %1, %%eax;");

//!FunctionDefinitionTest
//%CPP
int foo()
{
    return 1;
}


//!SimpleDeclarationTest
//%CPP
int i = 2, y = 3;
int b = 0;

//!ExplicitTemplateInstantion
//%CPP
template class vector<int>;

//!GPPExplicitTemplateInstantion
//%CPP GNU
static template class vector<int>;
inline template class vector<int>;
inline template class vector<int>;

//!LinkageSpecification
//%CPP
extern "C" typedef void FUNC();


//!NamespaceAlias
//%CPP
namespace kurz = somenamespace;

//!NamespaceDefinition
//%CPP
namespace somenamespace
{


}

//!TemplateDeclaration
//%CPP
template<class T> class vector
{
};

//!NestedTemplateDeclaration
//%CPP
template<template <class T> class K> class vector
{
};

//!TemplateSpecialization
//%CPP
template<typename T> class MyQueue;
template<> class MyQueue<double>
{
    std::vector<double> data;

public:
    void Add(const double&);
    void Remove();
    void Print();
};

//!UsingDeclaration
//%CPP
struct A
{
    void f();
    enum E{ e};
    union 
    {
        int u;
    };
};
struct B : A
{
    using A::f;
    using typename A::e;
    using A::u;
};

//!UsingDirective
//%CPP
using namespace B;


//!VisibilityLabel
//%CPP
class A
{
public:
    int hello();

protected:
    int b, c;

private:
    int p;
};

//!CommentBeforeSimpleDeclaration
//%CPP
//Comment
int i = 2;

//!Typename qualifier
//%CPP
typename T::A* a6;

