a2fc557d79
[SVN r79835]
69 lines
1.6 KiB
C++
69 lines
1.6 KiB
C++
#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
|
|
|