You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
78 lines
1.5 KiB
78 lines
1.5 KiB
template<typename ... A, int... B>
|
|
struct foo1 : foo1<A..., (sizeof ...(A)+B)...>
|
|
{
|
|
foo1() {
|
|
int x = sizeof ...(A);
|
|
}
|
|
};
|
|
|
|
template<int... X> int bar1()
|
|
{
|
|
auto s = sizeof ...(X);
|
|
chomp(X)...;
|
|
return X+...;
|
|
}
|
|
|
|
template<class R, typename ... Args>
|
|
void call1v(R (*fp)(Args...));
|
|
|
|
template<class R, typename ... Args>
|
|
void call1p(R (*fp)(Args*...));
|
|
|
|
template<class R, typename ... Args>
|
|
void call1r(R (*fp)(Args&&...));
|
|
|
|
template<class R, typename ... Args>
|
|
struct invoke1v : invoke<R (*)(Args...)>
|
|
{
|
|
};
|
|
|
|
template<class R, typename ... Args>
|
|
struct invoke1p : invoke<R (*)(Args*...)>
|
|
{
|
|
};
|
|
|
|
template<class R, typename ... Args>
|
|
struct invoke1r : invoke<R (*)(Args&&...)>
|
|
{
|
|
};
|
|
|
|
template < typename ... A, int ... B >
|
|
struct foo2 : foo2 < A ..., ( sizeof ... ( A ) + B ) ... >
|
|
{
|
|
foo2() {
|
|
int x = sizeof ... ( A );
|
|
}
|
|
};
|
|
|
|
template < int ... X > int bar2()
|
|
{
|
|
auto s = sizeof ... ( X );
|
|
chomp( X ) ...;
|
|
return X + ...;
|
|
}
|
|
|
|
template < class R, typename ... Args >
|
|
void call2v( R ( *fp )( Args ... ) );
|
|
|
|
template < class R, typename ... Args >
|
|
void call2p( R ( *fp )( Args * ... ) );
|
|
|
|
template < class R, typename ... Args >
|
|
void call2r( R ( *fp )( Args && ... ) );
|
|
|
|
template < class R, typename ... Args >
|
|
struct invoke2v : invoke < R ( * )( Args ... ) >
|
|
{
|
|
};
|
|
|
|
template < class R, typename ... Args >
|
|
struct invoke2p : invoke < R ( * )( Args * ... ) >
|
|
{
|
|
};
|
|
|
|
template < class R, typename ... Args >
|
|
struct invoke2r : invoke < R ( * )( Args && ... ) >
|
|
{
|
|
};
|