[libcxx] r192047 - Mark namespaces for user defined literals as 'inline'
Marshall Clow
mclow.lists at gmail.com
Sat Oct 5 14:18:32 PDT 2013
Author: marshall
Date: Sat Oct 5 16:18:32 2013
New Revision: 192047
URL: http://llvm.org/viewvc/llvm-project?rev=192047&view=rev
Log:
Mark namespaces for user defined literals as 'inline'
Added:
libcxx/trunk/test/strings/basic.string.literals/literal3.pass.cpp
libcxx/trunk/test/utilities/time/time.duration/time.duration.literals/literals1.fail.cpp
libcxx/trunk/test/utilities/time/time.duration/time.duration.literals/literals1.pass.cpp
libcxx/trunk/test/utilities/time/time.duration/time.duration.literals/literals2.fail.cpp
libcxx/trunk/test/utilities/time/time.duration/time.duration.literals/literals2.pass.cpp
Modified:
libcxx/trunk/include/chrono
libcxx/trunk/include/string
libcxx/trunk/test/strings/basic.string.literals/literal1.fail.cpp
Modified: libcxx/trunk/include/chrono
URL: http://llvm.org/viewvc/llvm-project/libcxx/trunk/include/chrono?rev=192047&r1=192046&r2=192047&view=diff
==============================================================================
--- libcxx/trunk/include/chrono (original)
+++ libcxx/trunk/include/chrono Sat Oct 5 16:18:32 2013
@@ -942,12 +942,9 @@ typedef steady_clock high_resolution_clo
} // chrono
-#if _LIBCPP_STD_VER > 11
-// Literal suffixes for chrono types
-// inline // Deviation from N3690.
-// We believe the inline to be a defect and have submitted an LWG issue.
-// An LWG issue number has not yet been assigned.
-namespace literals
+#if _LIBCPP_STD_VER > 11
+// Suffixes for duration literals [time.duration.literals]
+inline namespace literals
{
inline namespace chrono_literals
{
@@ -1018,6 +1015,11 @@ namespace literals
}
}}
+
+namespace chrono { // hoist the literals into namespace std::chrono
+ using namespace literals::chrono_literals;
+}
+
#endif
_LIBCPP_END_NAMESPACE_STD
Modified: libcxx/trunk/include/string
URL: http://llvm.org/viewvc/llvm-project/libcxx/trunk/include/string?rev=192047&r1=192046&r2=192047&view=diff
==============================================================================
--- libcxx/trunk/include/string (original)
+++ libcxx/trunk/include/string Sat Oct 5 16:18:32 2013
@@ -4158,10 +4158,7 @@ basic_string<_CharT, _Traits, _Allocator
#if _LIBCPP_STD_VER > 11
// Literal suffixes for basic_string [basic.string.literals]
-// inline // Deviation from N3690.
-// We believe the inline to be a defect and have submitted an LWG issue.
-// An LWG issue number has not yet been assigned.
-namespace literals
+inline namespace literals
{
inline namespace string_literals
{
Modified: libcxx/trunk/test/strings/basic.string.literals/literal1.fail.cpp
URL: http://llvm.org/viewvc/llvm-project/libcxx/trunk/test/strings/basic.string.literals/literal1.fail.cpp?rev=192047&r1=192046&r2=192047&view=diff
==============================================================================
--- libcxx/trunk/test/strings/basic.string.literals/literal1.fail.cpp (original)
+++ libcxx/trunk/test/strings/basic.string.literals/literal1.fail.cpp Sat Oct 5 16:18:32 2013
@@ -13,9 +13,9 @@
int main()
{
#if _LIBCPP_STD_VER > 11
- using namespace std;
+ using std::string;
- std::string foo = ""s; // should fail w/conversion operator not found
+ string foo = ""s; // should fail w/conversion operator not found
#else
#error
#endif
Added: libcxx/trunk/test/strings/basic.string.literals/literal3.pass.cpp
URL: http://llvm.org/viewvc/llvm-project/libcxx/trunk/test/strings/basic.string.literals/literal3.pass.cpp?rev=192047&view=auto
==============================================================================
--- libcxx/trunk/test/strings/basic.string.literals/literal3.pass.cpp (added)
+++ libcxx/trunk/test/strings/basic.string.literals/literal3.pass.cpp Sat Oct 5 16:18:32 2013
@@ -0,0 +1,20 @@
+// -*- C++ -*-
+//===----------------------------------------------------------------------===//
+//
+// The LLVM Compiler Infrastructure
+//
+// This file is dual licensed under the MIT and the University of Illinois Open
+// Source Licenses. See LICENSE.TXT for details.
+//
+//===----------------------------------------------------------------------===//
+#include <string>
+#include <cassert>
+
+int main()
+{
+#if _LIBCPP_STD_VER > 11
+ using namespace std;
+
+ string foo = ""s;
+#endif
+}
Added: libcxx/trunk/test/utilities/time/time.duration/time.duration.literals/literals1.fail.cpp
URL: http://llvm.org/viewvc/llvm-project/libcxx/trunk/test/utilities/time/time.duration/time.duration.literals/literals1.fail.cpp?rev=192047&view=auto
==============================================================================
--- libcxx/trunk/test/utilities/time/time.duration/time.duration.literals/literals1.fail.cpp (added)
+++ libcxx/trunk/test/utilities/time/time.duration/time.duration.literals/literals1.fail.cpp Sat Oct 5 16:18:32 2013
@@ -0,0 +1,21 @@
+// -*- C++ -*-
+//===----------------------------------------------------------------------===//
+//
+// The LLVM Compiler Infrastructure
+//
+// This file is dual licensed under the MIT and the University of Illinois Open
+// Source Licenses. See LICENSE.TXT for details.
+//
+//===----------------------------------------------------------------------===//
+#include <chrono>
+#include <cassert>
+
+int main()
+{
+#if _LIBCPP_STD_VER > 11
+ std::chrono::hours h = 4h; // should fail w/conversion operator not found
+#else
+#error
+#endif
+}
+
Added: libcxx/trunk/test/utilities/time/time.duration/time.duration.literals/literals1.pass.cpp
URL: http://llvm.org/viewvc/llvm-project/libcxx/trunk/test/utilities/time/time.duration/time.duration.literals/literals1.pass.cpp?rev=192047&view=auto
==============================================================================
--- libcxx/trunk/test/utilities/time/time.duration/time.duration.literals/literals1.pass.cpp (added)
+++ libcxx/trunk/test/utilities/time/time.duration/time.duration.literals/literals1.pass.cpp Sat Oct 5 16:18:32 2013
@@ -0,0 +1,48 @@
+// -*- C++ -*-
+//===----------------------------------------------------------------------===//
+//
+// The LLVM Compiler Infrastructure
+//
+// This file is dual licensed under the MIT and the University of Illinois Open
+// Source Licenses. See LICENSE.TXT for details.
+//
+//===----------------------------------------------------------------------===//
+#include <chrono>
+#include <cassert>
+
+int main()
+{
+#if _LIBCPP_STD_VER > 11
+ using namespace std::chrono;
+
+ hours h = 4h;
+ assert ( h == hours(4));
+ auto h2 = 4.0h;
+ assert ( h == h2 );
+
+ minutes min = 36min;
+ assert ( min == minutes(36));
+ auto min2 = 36.0min;
+ assert ( min == min2 );
+
+ seconds s = 24s;
+ assert ( s == seconds(24));
+ auto s2 = 24.0s;
+ assert ( s == s2 );
+
+ milliseconds ms = 247ms;
+ assert ( ms == milliseconds(247));
+ auto ms2 = 247.0ms;
+ assert ( ms == ms2 );
+
+ microseconds us = 867us;
+ assert ( us == microseconds(867));
+ auto us2 = 867.0us;
+ assert ( us == us2 );
+
+ nanoseconds ns = 645ns;
+ assert ( ns == nanoseconds(645));
+ auto ns2 = 645.ns;
+ assert ( ns == ns2 );
+#endif
+}
Added: libcxx/trunk/test/utilities/time/time.duration/time.duration.literals/literals2.fail.cpp
URL: http://llvm.org/viewvc/llvm-project/libcxx/trunk/test/utilities/time/time.duration/time.duration.literals/literals2.fail.cpp?rev=192047&view=auto
==============================================================================
--- libcxx/trunk/test/utilities/time/time.duration/time.duration.literals/literals2.fail.cpp (added)
+++ libcxx/trunk/test/utilities/time/time.duration/time.duration.literals/literals2.fail.cpp Sat Oct 5 16:18:32 2013
@@ -0,0 +1,22 @@
+// -*- C++ -*-
+//===----------------------------------------------------------------------===//
+//
+// The LLVM Compiler Infrastructure
+//
+// This file is dual licensed under the MIT and the University of Illinois Open
+// Source Licenses. See LICENSE.TXT for details.
+//
+//===----------------------------------------------------------------------===//
+#include <chrono>
+#include <cassert>
+
+int main()
+{
+#if _LIBCPP_STD_VER > 11
+ using std::chrono::hours;
+
+ hours foo = 4h; // should fail w/conversion operator not found
+#else
+#error
+#endif
+}
Added: libcxx/trunk/test/utilities/time/time.duration/time.duration.literals/literals2.pass.cpp
URL: http://llvm.org/viewvc/llvm-project/libcxx/trunk/test/utilities/time/time.duration/time.duration.literals/literals2.pass.cpp?rev=192047&view=auto
==============================================================================
--- libcxx/trunk/test/utilities/time/time.duration/time.duration.literals/literals2.pass.cpp (added)
+++ libcxx/trunk/test/utilities/time/time.duration/time.duration.literals/literals2.pass.cpp Sat Oct 5 16:18:32 2013
@@ -0,0 +1,51 @@
+//===----------------------------------------------------------------------===//
+//
+// The LLVM Compiler Infrastructure
+//
+// This file is dual licensed under the MIT and the University of Illinois Open
+// Source Licenses. See LICENSE.TXT for details.
+//
+//===----------------------------------------------------------------------===//
+
+// <chrono>
+
+#include <chrono>
+#include <type_traits>
+#include <cassert>
+
+int main()
+{
+#if _LIBCPP_STD_VER > 11
+ using namespace std::literals;
+
+ std::chrono::hours h = 4h;
+ assert ( h == std::chrono::hours(4));
+ auto h2 = 4.0h;
+ assert ( h == h2 );
+
+ std::chrono::minutes min = 36min;
+ assert ( min == std::chrono::minutes(36));
+ auto min2 = 36.0min;
+ assert ( min == min2 );
+
+ std::chrono::seconds s = 24s;
+ assert ( s == std::chrono::seconds(24));
+ auto s2 = 24.0s;
+ assert ( s == s2 );
+
+ std::chrono::milliseconds ms = 247ms;
+ assert ( ms == std::chrono::milliseconds(247));
+ auto ms2 = 247.0ms;
+ assert ( ms == ms2 );
+
+ std::chrono::microseconds us = 867us;
+ assert ( us == std::chrono::microseconds(867));
+ auto us2 = 867.0us;
+ assert ( us == us2 );
+
+ std::chrono::nanoseconds ns = 645ns;
+ assert ( ns == std::chrono::nanoseconds(645));
+ auto ns2 = 645.ns;
+ assert ( ns == ns2 );
+#endif
+}
More information about the cfe-commits
mailing list