summaryrefslogtreecommitdiffstats
path: root/libcxx/test/utilities/function.objects/arithmetic.operations
diff options
context:
space:
mode:
authorMarshall Clow <mclow.lists@gmail.com>2013-09-28 19:06:12 +0000
committerMarshall Clow <mclow.lists@gmail.com>2013-09-28 19:06:12 +0000
commit3d5134dd5262960fb8f7cf0a2291dde34e23d127 (patch)
treefb379023edaded98f1313348b752ce56b34cb838 /libcxx/test/utilities/function.objects/arithmetic.operations
parent8392ab209e9c6fac9d5d3c8b70de396564458237 (diff)
downloadbcm5719-llvm-3d5134dd5262960fb8f7cf0a2291dde34e23d127.tar.gz
bcm5719-llvm-3d5134dd5262960fb8f7cf0a2291dde34e23d127.zip
Implement n3789; constexpr support in named function objects
llvm-svn: 191626
Diffstat (limited to 'libcxx/test/utilities/function.objects/arithmetic.operations')
-rw-r--r--libcxx/test/utilities/function.objects/arithmetic.operations/divides.pass.cpp6
-rw-r--r--libcxx/test/utilities/function.objects/arithmetic.operations/minus.pass.cpp6
-rw-r--r--libcxx/test/utilities/function.objects/arithmetic.operations/modulus.pass.cpp6
-rw-r--r--libcxx/test/utilities/function.objects/arithmetic.operations/multiplies.pass.cpp6
-rw-r--r--libcxx/test/utilities/function.objects/arithmetic.operations/negate.pass.cpp6
-rw-r--r--libcxx/test/utilities/function.objects/arithmetic.operations/plus.pass.cpp6
6 files changed, 36 insertions, 0 deletions
diff --git a/libcxx/test/utilities/function.objects/arithmetic.operations/divides.pass.cpp b/libcxx/test/utilities/function.objects/arithmetic.operations/divides.pass.cpp
index 5eeba18b657..74298f23b7c 100644
--- a/libcxx/test/utilities/function.objects/arithmetic.operations/divides.pass.cpp
+++ b/libcxx/test/utilities/function.objects/arithmetic.operations/divides.pass.cpp
@@ -27,5 +27,11 @@ int main()
assert(f2(36, 4) == 9);
assert(f2(36.0, 4) == 9);
assert(f2(18, 4.0) == 4.5); // exact in binary
+
+ constexpr int foo = std::divides<int> () (3, 2);
+ static_assert ( foo == 1, "" );
+
+ constexpr int bar = std::divides<> () (3.0, 2);
+ static_assert ( bar == 1, "" );
#endif
}
diff --git a/libcxx/test/utilities/function.objects/arithmetic.operations/minus.pass.cpp b/libcxx/test/utilities/function.objects/arithmetic.operations/minus.pass.cpp
index 2a8ecd6b876..9a496a8066c 100644
--- a/libcxx/test/utilities/function.objects/arithmetic.operations/minus.pass.cpp
+++ b/libcxx/test/utilities/function.objects/arithmetic.operations/minus.pass.cpp
@@ -27,5 +27,11 @@ int main()
assert(f2(3,2) == 1);
assert(f2(3.0, 2) == 1);
assert(f2(3, 2.5) == 0.5);
+
+ constexpr int foo = std::minus<int> () (3, 2);
+ static_assert ( foo == 1, "" );
+
+ constexpr int bar = std::minus<> () (3.0, 2);
+ static_assert ( bar == 1, "" );
#endif
}
diff --git a/libcxx/test/utilities/function.objects/arithmetic.operations/modulus.pass.cpp b/libcxx/test/utilities/function.objects/arithmetic.operations/modulus.pass.cpp
index 421f9452d62..3c178819231 100644
--- a/libcxx/test/utilities/function.objects/arithmetic.operations/modulus.pass.cpp
+++ b/libcxx/test/utilities/function.objects/arithmetic.operations/modulus.pass.cpp
@@ -27,5 +27,11 @@ int main()
assert(f2(36, 8) == 4);
assert(f2(36L, 8) == 4);
assert(f2(36, 8L) == 4);
+
+ constexpr int foo = std::modulus<int> () (3, 2);
+ static_assert ( foo == 1, "" );
+
+ constexpr int bar = std::modulus<> () (3L, 2);
+ static_assert ( bar == 1, "" );
#endif
}
diff --git a/libcxx/test/utilities/function.objects/arithmetic.operations/multiplies.pass.cpp b/libcxx/test/utilities/function.objects/arithmetic.operations/multiplies.pass.cpp
index 67bb5a5e3d0..97287e6c8da 100644
--- a/libcxx/test/utilities/function.objects/arithmetic.operations/multiplies.pass.cpp
+++ b/libcxx/test/utilities/function.objects/arithmetic.operations/multiplies.pass.cpp
@@ -27,5 +27,11 @@ int main()
assert(f2(3,2) == 6);
assert(f2(3.0, 2) == 6);
assert(f2(3, 2.5) == 7.5); // exact in binary
+
+ constexpr int foo = std::multiplies<int> () (3, 2);
+ static_assert ( foo == 6, "" );
+
+ constexpr int bar = std::multiplies<> () (3.0, 2);
+ static_assert ( bar == 6, "" );
#endif
}
diff --git a/libcxx/test/utilities/function.objects/arithmetic.operations/negate.pass.cpp b/libcxx/test/utilities/function.objects/arithmetic.operations/negate.pass.cpp
index 181c1fb7aa8..3ffb7051bfd 100644
--- a/libcxx/test/utilities/function.objects/arithmetic.operations/negate.pass.cpp
+++ b/libcxx/test/utilities/function.objects/arithmetic.operations/negate.pass.cpp
@@ -27,5 +27,11 @@ int main()
assert(f2(36) == -36);
assert(f2(36L) == -36);
assert(f2(36.0) == -36);
+
+ constexpr int foo = std::negate<int> () (3);
+ static_assert ( foo == -3, "" );
+
+ constexpr int bar = std::negate<> () (3.0);
+ static_assert ( bar == -3, "" );
#endif
}
diff --git a/libcxx/test/utilities/function.objects/arithmetic.operations/plus.pass.cpp b/libcxx/test/utilities/function.objects/arithmetic.operations/plus.pass.cpp
index 4de23fff086..44001a0e5f4 100644
--- a/libcxx/test/utilities/function.objects/arithmetic.operations/plus.pass.cpp
+++ b/libcxx/test/utilities/function.objects/arithmetic.operations/plus.pass.cpp
@@ -27,5 +27,11 @@ int main()
assert(f2(3,2) == 5);
assert(f2(3.0, 2) == 5);
assert(f2(3, 2.5) == 5.5);
+
+ constexpr int foo = std::plus<int> () (3, 2);
+ static_assert ( foo == 5, "" );
+
+ constexpr int bar = std::plus<> () (3.0, 2);
+ static_assert ( bar == 5, "" );
#endif
}
OpenPOWER on IntegriCloud