diff options
author | Anders Carlsson <andersca@mac.com> | 2009-06-08 15:19:08 +0000 |
---|---|---|
committer | Anders Carlsson <andersca@mac.com> | 2009-06-08 15:19:08 +0000 |
commit | a27fad59dc760252af025ef6a86d31bb7d11a44a (patch) | |
tree | 92e91c0d6ff562da3c59214c44f9edd5f2d6d197 /test/SemaTemplate/temp_class_spec.cpp | |
parent | a23b4856476320435e1ae59f71f19fc30b1c9992 (diff) |
Template argument deduction for function types.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@73070 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'test/SemaTemplate/temp_class_spec.cpp')
-rw-r--r-- | test/SemaTemplate/temp_class_spec.cpp | 32 |
1 files changed, 32 insertions, 0 deletions
diff --git a/test/SemaTemplate/temp_class_spec.cpp b/test/SemaTemplate/temp_class_spec.cpp index 8cb46cf98f..4e4f5560ae 100644 --- a/test/SemaTemplate/temp_class_spec.cpp +++ b/test/SemaTemplate/temp_class_spec.cpp @@ -102,3 +102,35 @@ struct get_array_size<T[N]> { }; int array_size0[get_array_size<int[12]>::value == 12? 1 : -1]; + +template<typename T> +struct is_unary_function { + static const bool value = false; +}; + +template<typename T, typename U> +struct is_unary_function<T (*)(U)> { + static const bool value = true; +}; + +int is_unary_function0[is_unary_function<int>::value ? -1 : 1]; +int is_unary_function1[is_unary_function<int (*)()>::value ? -1 : 1]; +int is_unary_function2[is_unary_function<int (*)(int, bool)>::value ? -1 : 1]; +int is_unary_function3[is_unary_function<int (*)(bool)>::value ? 1 : -1]; +int is_unary_function4[is_unary_function<int (*)(int)>::value ? 1 : -1]; + +template<typename T> +struct is_unary_function_with_same_return_type_as_argument_type { + static const bool value = false; +}; + +template<typename T> +struct is_unary_function_with_same_return_type_as_argument_type<T (*)(T)> { + static const bool value = true; +}; + +int is_unary_function5[is_unary_function_with_same_return_type_as_argument_type<int>::value ? -1 : 1]; +int is_unary_function6[is_unary_function_with_same_return_type_as_argument_type<int (*)()>::value ? -1 : 1]; +int is_unary_function7[is_unary_function_with_same_return_type_as_argument_type<int (*)(int, bool)>::value ? -1 : 1]; +int is_unary_function8[is_unary_function_with_same_return_type_as_argument_type<int (*)(bool)>::value ? -1 : 1]; +int is_unary_function9[is_unary_function_with_same_return_type_as_argument_type<int (*)(int)>::value ? 1 : -1]; |