C++14 constexpr are seriously starting to look awesome!
On Thu, Jul 25, 2013 at 3:53 AM, Richard Smith <[email protected]>wrote: > Author: rsmith > Date: Wed Jul 24 20:53:54 2013 > New Revision: 187096 > > URL: http://llvm.org/viewvc/llvm-project?rev=187096&view=rev > Log: > Add another C++14 constexpr test case. > > Added: > cfe/trunk/test/SemaCXX/constexpr-duffs-device.cpp > > Added: cfe/trunk/test/SemaCXX/constexpr-duffs-device.cpp > URL: > http://llvm.org/viewvc/llvm-project/cfe/trunk/test/SemaCXX/constexpr-duffs-device.cpp?rev=187096&view=auto > > ============================================================================== > --- cfe/trunk/test/SemaCXX/constexpr-duffs-device.cpp (added) > +++ cfe/trunk/test/SemaCXX/constexpr-duffs-device.cpp Wed Jul 24 20:53:54 > 2013 > @@ -0,0 +1,32 @@ > +// RUN: %clang_cc1 -std=c++1y -verify %s > + > +// expected-no-diagnostics > +constexpr void copy(const char *from, unsigned long count, char *to) { > + unsigned long n = (count + 7) / 8; > + switch(count % 8) { > + case 0: do { *to++ = *from++; > + case 7: *to++ = *from++; > + case 6: *to++ = *from++; > + case 5: *to++ = *from++; > + case 4: *to++ = *from++; > + case 3: *to++ = *from++; > + case 2: *to++ = *from++; > + case 1: *to++ = *from++; > + } while(--n > 0); > + } > +} > + > +struct S { > + char stuff[14]; > + constexpr S() : stuff{} { > + copy("Hello, world!", 14, stuff); > + } > +}; > + > +constexpr bool streq(const char *a, const char *b) { > + while (*a && *a == *b) ++a, ++b; > + return *a == *b; > +} > + > +static_assert(streq(S().stuff, "Hello, world!"), "should be same"); > +static_assert(!streq(S().stuff, "Something else"), "should be different"); > > > _______________________________________________ > cfe-commits mailing list > [email protected] > http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits >
_______________________________________________ cfe-commits mailing list [email protected] http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits
