Commit 2735097a by Jonathan Wakely Committed by Jonathan Wakely

re PR libstdc++/13860 (Poor error messages on invalid template parameters for basic_filebuf)

	PR libstdc++/13860
	* include/std/fstream (basic_filebuf): Enforce requirements on traits.

From-SVN: r210231
parent 2793eeab
......@@ -11,6 +11,9 @@
(swap(basic_streambuf&)): Define for C++11.
* testsuite/27_io/basic_streambuf/cons/57394.cc: New.
PR libstdc++/13860
* include/std/fstream (basic_filebuf): Enforce requirements on traits.
2014-05-08 Paolo Carlini <paolo.carlini@oracle.com>
* acinclude.m4 ([GLIBCXX_ENABLE_C99]): Avoid -Wwrite-strings warning.
......
......@@ -71,6 +71,20 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
template<typename _CharT, typename _Traits>
class basic_filebuf : public basic_streambuf<_CharT, _Traits>
{
#if __cplusplus >= 201103L
template<typename _Tp>
using __chk_state = __and_<is_copy_assignable<_Tp>,
is_copy_constructible<_Tp>,
is_default_constructible<_Tp>>;
static_assert(__chk_state<typename _Traits::state_type>::value,
"state_type must be CopyAssignable, CopyConstructible"
" and DefaultConstructible");
static_assert(is_same<typename _Traits::pos_type,
fpos<typename _Traits::state_type>>::value,
"pos_type must be fpos<state_type>");
#endif
public:
// Types:
typedef _CharT char_type;
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment