# iosfwd

***

**1. Forward Declaration of a Class**

```cpp
class ForwardDeclaredClass;
```

**2. Forward Declaration of a Function**

```cpp
void forward_declared_function();
```

**3. Forward Declaration of a Protocol**

```cpp
@protocol ForwardDeclaredProtocol <NSObject>
- (void)forwardDeclaredMethod;
@end
```

**4. Forward Declaration of a Type Alias**

```cpp
typedef ForwardDeclaredTypeAlias int;
```

**5. Forward Declaration of a Template**

```cpp
template <typename T> class ForwardDeclaredTemplate;
```

**6. Forward Declaration of a Variable**

```cpp
extern int forward_declared_variable;
```

**7. Forward Declaration of a Block Type**

```cpp
typedef void (^ForwardDeclaredBlockType)();
```

**8. Forward Declaration of an Objective-C Class**

```objc
@class ForwardDeclaredClass;
```

**9. Forward Declaration of an Objective-C Protocol**

```objc
@protocol ForwardDeclaredProtocol;
```

**10. Forward Declaration of an Objective-C Function Pointer**

```objc
typedef int (*ForwardDeclaredFunctionPointer)(int);
```

**11. Forward Declaration of an Objective-C Type Alias**

```objc
typedef int ForwardDeclaredTypeAlias;
```

**12. Forward Declaration of an Objective-C Variable**

```objc
extern int forward_declared_variable;
```

**13. Forward Declaration of an Objective-C Block Type**

```objc
typedef void (^ForwardDeclaredBlockType)();
```

**14. Forward Declaration of a C Function**

```c
extern int forward_declared_c_function(int);
```

**15. Forward Declaration of a C Type Alias**

```c
typedef int ForwardDeclaredCTypeAlias;
```

**16. Forward Declaration of a C Variable**

```c
extern int forward_declared_c_variable;
```

**17. Forward Declaration of a C Block Type**

```c
typedef void (*ForwardDeclaredCBlockType)();
```

**18. Forward Declaration of a Struct**

```cpp
struct ForwardDeclaredStruct {
  int a;
  int b;
};
```

**19. Forward Declaration of a Union**

```cpp
union ForwardDeclaredUnion {
  int a;
  float b;
};
```

**20. Forward Declaration of an Enum**

```cpp
enum ForwardDeclaredEnum {
  A,
  B,
  C
};
```

**21. Forward Declaration of a Namespace**

```cpp
namespace ForwardDeclaredNamespace {};
```

**22. Forward Declaration of a Template Typedef**

```cpp
template <typename T> typedef ForwardDeclaredTemplateTypedef T;
```

**23. Forward Declaration of a Function Template**

```cpp
template <typename T> void forward_declared_function_template(T);
```

**24. Forward Declaration of a Class Template**

```cpp
template <typename T> class ForwardDeclaredClassTemplate;
```

**25. Forward Declaration of a Protocol Template**

```cpp
template <typename T> @protocol ForwardDeclaredProtocolTemplate<T> <NSObject>
- (void)forwardDeclaredMethod:(T);
@end
```

**26. Forward Declaration of a Type Alias Template**

```cpp
template <typename T> typedef ForwardDeclaredTypeAliasTemplate<T> T;
```

**27. Forward Declaration of a Variable Template**

```cpp
template <typename T> extern T forward_declared_variable_template;
```

**28. Forward Declaration of a Block Type Template**

```cpp
template <typename T> typedef void (^ForwardDeclaredBlockTypeTemplate<T>)(T);
```

**29. Forward Declaration of an Objective-C Class Template**

```objc
@class ForwardDeclaredClassTemplate<T>;
```

**30. Forward Declaration of an Objective-C Protocol Template**

```objc
@protocol ForwardDeclaredProtocolTemplate<T> <NSObject>
- (void)forwardDeclaredMethod:(T);
@end
```

**31. Forward Declaration of an Objective-C Type Alias Template**

```objc
typedef ForwardDeclaredTypeAliasTemplate<T> T;
```

**32. Forward Declaration of an Objective-C Variable Template**

```objc
extern ForwardDeclaredVariableTemplate<T> T;
```

**33. Forward Declaration of an Objective-C Block Type Template**

```objc
typedef void (^ForwardDeclaredBlockTypeTemplate<T>)(T);
```

**34. Forward Declaration of a C Function Template**

```c
extern int forward_declared_c_function_template(int);
```

**35. Forward Declaration of a C Type Alias Template**

```c
typedef int ForwardDeclaredCTypeAliasTemplate<T>;
```

**36. Forward Declaration of a C Variable Template**

```c
extern int forward_declared_c_variable_template;
```

**37. Forward Declaration of a C Block Type Template**

```c
typedef void (*ForwardDeclaredCBlockTypeTemplate<T>)(T);
```

**38. Forward Declaration of a Struct Template**

```cpp
template <typename T> struct ForwardDeclaredStructTemplate {
  T a;
  T b;
};
```

**39. Forward Declaration of a Union Template**

```cpp
template <typename T> union ForwardDeclaredUnionTemplate {
  T a;
  float b;
};
```

**40. Forward Declaration of an Enum Template**

```cpp
template <typename T> enum ForwardDeclaredEnumTemplate {
  A,
  B,
  C
};
```

**41. Forward Declaration of a Namespace Template**

```cpp
template <typename T> namespace ForwardDeclaredNamespaceTemplate {};
```

**42. Forward Declaration of a Template Template**

```cpp
template <typename T> template <typename U> class ForwardDeclaredTemplateTemplate;
```

**43. Forward Declaration of a Function Template Template**

```cpp
template <typename T> template <typename U> void
forward_declared_function_template_template(T, U);
```

**44. Forward Declaration of a Class Template Template**

```cpp
template <typename T> template <typename U> class
ForwardDeclaredClassTemplateTemplate;
```

**45. Forward Declaration of a Protocol Template Template**

```cpp
template <typename T> template <typename U> @protocol
ForwardDeclaredProtocolTemplateTemplate<T, U> <NSObject>
- (void)forwardDeclaredMethod:(T, U);
@end
```

**46. Forward Declaration of a Type Alias Template Template**

```cpp
template <typename T> template <typename U> typedef
ForwardDeclaredTypeAliasTemplateTemplate<T, U> T;
```

**47. Forward Declaration of a Variable Template Template**

```cpp
template <typename T> template <typename U> extern T
forward_declared_variable_template_template;
```

**48. Forward Declaration of a Block Type Template Template**

```cpp
template <typename T> template <typename U> typedef
void (^ForwardDeclaredBlockTypeTemplateTemplate<T, U>)(T, U);
```

**49. Forward Declaration of an Objective-C Class Template Template**

```objc
@class ForwardDeclaredClassTemplateTemplate<T, U>;
```

**50. Forward Declaration of an Objective-C Protocol Template Template**

```objc
@protocol ForwardDeclaredProtocolTemplateTemplate<T, U> <NSObject>
- (void)forwardDeclaredMethod:(T, U);
@end
```
