2014-06-23 13:46:34 +02:00
namespace test { //implicit instantiation
template < bool B , class T , class F >
struct conditional { typedef T type ; } ;
2014-08-03 21:05:42 -05:00
2014-06-23 13:46:34 +02:00
template < class T , class F >
struct conditional < false , T , F > { typedef F type ; } ;
2014-08-03 21:05:42 -05:00
2014-06-23 13:46:34 +02:00
template < typename _Tp > using example = typename conditional < true , int , float > : : type ;
2014-08-11 02:58:42 +05:30
2014-06-23 13:46:34 +02:00
} //end namespace test
namespace test { //nested name specifier
class HasSubType {
public :
class SubType { } ;
} ;
HasSubType : : SubType FunctionUsingSubtype ( HasSubType : : SubType s ) { return s ; }
extern HasSubType : : SubType variable ; //locale::id id
2014-08-03 21:05:42 -05:00
2014-08-11 02:58:42 +05:30
} //end namespace test // This problem is bypassed by skipping types containing "::"
2014-06-23 13:46:34 +02:00
namespace test { //restrict keyword: try include/mmprivate.h and strlcpy.h when fixed
typedef long ssize_t ;
typedef unsigned int size_t ;
//Has signature of readlink from unistd.h
extern ssize_t FunctionUsingRestrictPtr ( const char * __restrict __path ,
char * __restrict __buf , size_t __len ) ;
2014-08-11 02:58:42 +05:30
} //end namespace test // This is bypassed by forcibly removing restrict from types
2014-06-23 13:46:34 +02:00
2014-08-11 02:58:42 +05:30
// namespace test { //default template arg
// template <typename T,int MAX=100> class Stack {
// };
// Stack<int> FunctionReturningStack(){return Stack<int>();}
// }//end namespace test // Fixed with callback, strip old default args before including new file
// namespace test {
// //#include<tuple> //'tie' function
// //commented out to skip huge output
// } //Fixed bug in VisitFunctionDecl
2014-06-23 13:46:34 +02:00