2009-05-30 14:31:56 +08:00
|
|
|
//-*- C++ -*-
|
|
|
|
|
|
|
|
// Intended to exercise all syntactic parts of the C++ language that
|
|
|
|
// aren't part of C.
|
|
|
|
|
|
|
|
namespace std {
|
|
|
|
namespace debug {
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
using namespace std::debug;
|
|
|
|
using namespace std;
|
2009-05-30 14:48:27 +08:00
|
|
|
|
|
|
|
namespace safestl = ::std::debug;
|
2009-05-30 14:58:37 +08:00
|
|
|
|
|
|
|
class Base1 {
|
|
|
|
};
|
|
|
|
|
|
|
|
class Base2 { };
|
|
|
|
|
|
|
|
class Derived1 : Base1, virtual public Base2 { };
|
2010-12-15 23:06:14 +08:00
|
|
|
|
|
|
|
/* Template classes, template functions */
|
|
|
|
enum E1 { EC1 };
|
|
|
|
template <E1 v> class C1 {};
|
|
|
|
template <E1 v> C1<v> f1() { return C1<v>(); }
|
|
|
|
void f2() { f1<EC1>(); }
|
2017-01-03 20:07:20 +08:00
|
|
|
|
|
|
|
// Friend declarations
|
|
|
|
struct FriendlyStruct {
|
|
|
|
friend bool operator==(FriendlyStruct, FriendlyStruct) { return true; }
|
|
|
|
friend struct FriendedStruct;
|
|
|
|
};
|
|
|
|
|
|
|
|
struct FriendedStruct { };
|
2017-01-03 20:08:40 +08:00
|
|
|
|
|
|
|
// Using declaration
|
|
|
|
namespace provider {
|
|
|
|
void foo();
|
|
|
|
}
|
|
|
|
namespace user {
|
|
|
|
using provider::foo;
|
|
|
|
}
|
2017-01-03 20:09:39 +08:00
|
|
|
|
|
|
|
// Empty declaration
|
|
|
|
;
|
2017-01-03 20:11:17 +08:00
|
|
|
|
|
|
|
// Template specialization declarations
|
|
|
|
template<typename T> class ClassTemplateSpecialization;
|
|
|
|
|
|
|
|
template<>
|
|
|
|
class ClassTemplateSpecialization<bool> { };
|
|
|
|
|
|
|
|
template<typename T, bool> struct ClassTemplatePartialSpecialization;
|
|
|
|
|
|
|
|
template<typename T>
|
|
|
|
struct ClassTemplatePartialSpecialization<T, true> { };
|
2017-01-03 20:12:36 +08:00
|
|
|
|
|
|
|
// Access specifier
|
|
|
|
struct AccessSpec {
|
|
|
|
private:
|
|
|
|
};
|
2017-01-03 20:14:59 +08:00
|
|
|
|
|
|
|
// Variable template
|
|
|
|
template <typename T> T varTemplate = 0;
|
2017-01-03 20:16:02 +08:00
|
|
|
|
|
|
|
static_assert(true, "");
|