variadic-crash1.c
来自「用于进行gcc测试」· C语言 代码 · 共 73 行
C
73 行
// { dg-options "-std=gnu++0x" }#define ONE#define TWO#define THREEstruct Something {};Something ___;template <class F>struct Trial{ F f;public: Trial() : f() {} Trial( const F& ff ) : f(ff) { } template <typename... Args> struct Sig { typedef int ResultType; }; template <typename... Args> struct Sig<Something,Args...> { typedef int ResultType; };#ifdef ONEtemplate <typename... Args>typename Sig<Something,Args...>::ResultType operator()(const Something& s, const Args&... args) const{ return f(args...);}#endif#ifdef TWOtemplate <typename... Args>typename Sig<Args...>::ResultType operator()(const Args&... args) const{ return f(args...);}#endif};struct Internal{template <typename... Args>struct Sig { typedef int ResultType; };template <typename... Args>struct Sig<Something,Args...> { typedef int ResultType; };template <typename... Args>int operator()(const Args&... args) const{ int n = sizeof...(Args); return n;} static Trial<Internal>& full() { static Trial<Internal> f; return f; }};static Trial<Internal>& internal = Internal::full();int main(){ int n = 0;#ifdef ONE n = internal(___,1,2);#endif#ifdef THREE n = internal(___,1,2,3); n = internal(___,1,2,3,4);#endif return 0;}
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?