1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768 |
- #ifndef BOOST_MATH_S__HPP
- #define BOOST_MATH_S__HPP
- // Copyright (c) 2006 Johan Rade
- // Copyright (c) 2012 Paul A. Bristow
- // Distributed under the Boost Software License, Version 1.0.
- // (See accompanying file LICENSE_1_0.txt
- // or copy at http://www.boost.org/LICENSE_1_0.txt)
- // The macro S_ lets you write
- //
- // basic_string<CharType> s = S_("foo");
- // and
- // CharType c = S_('a');
- //
- // provided that CharType is either char or wchar_t.
- // Used by tests of output of signed zero and others.
- #ifdef _MSC_VER
- # pragma warning(push)
- # pragma warning(disable : 4512) // conditional expression is constant.
- #endif
- #include <string>
- //------------------------------------------------------------------------------
- #define S_(a) make_literal_helper(a, L##a)
- class char_literal_helper {
- public:
- char_literal_helper(char c, wchar_t wc) : c_(c), wc_(wc) {}
- operator char() { return c_; }
- operator wchar_t() { return wc_; }
- private:
- const char c_;
- const wchar_t wc_;
- };
- class string_literal_helper {
- public:
- string_literal_helper(const char* s, const wchar_t* ws) : s_(s), ws_(ws) {}
- operator std::string() { return s_; }
- operator std::wstring() { return ws_; }
- private:
- const char* s_;
- const wchar_t* ws_;
- };
- inline char_literal_helper make_literal_helper(char c, wchar_t wc)
- {
- return char_literal_helper(c, wc);
- }
- inline string_literal_helper make_literal_helper(const char* s, const wchar_t* ws)
- {
- return string_literal_helper(s, ws);
- }
- //------------------------------------------------------------------------------
- #ifdef _MSC_VER
- # pragma warning(pop)
- #endif
- #endif // BOOST_MATH_S__HPP
|