On 1 December 2016 at 07:38, Markus Trippelsdorf <[email protected]> wrote:
> It breaks building Firefox:
Sigh, when writing a trait, write a proper trait. Does this patch fix
the problem?
2016-12-01 Ville Voutilainen <[email protected]>
The convertible_to traits need to use a variadic catch-all for the
false-cases.
* include/std/istream (__is_convertible_to_basic_istream):
Change the parameter of the false-case of __check to a variadic.
* include/std/ostream (__is_convertible_to_basic_ostream):
Likewise.
diff --git a/libstdc++-v3/include/std/istream b/libstdc++-v3/include/std/istream
index 319e226..1d77d30 100644
--- a/libstdc++-v3/include/std/istream
+++ b/libstdc++-v3/include/std/istream
@@ -915,7 +915,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
template<typename _Ch, typename _Up>
static basic_istream<_Ch, _Up>& __check(basic_istream<_Ch, _Up>*);
- static void __check(void*);
+ static void __check(...);
public:
using istream_type =
decltype(__check(declval<typename remove_reference<_Tp>::type*>()));
diff --git a/libstdc++-v3/include/std/ostream b/libstdc++-v3/include/std/ostream
index 70fd10b..9dea778 100644
--- a/libstdc++-v3/include/std/ostream
+++ b/libstdc++-v3/include/std/ostream
@@ -619,7 +619,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
template<typename _Ch, typename _Up>
static basic_ostream<_Ch, _Up>& __check(basic_ostream<_Ch, _Up>*);
- static void __check(void*);
+ static void __check(...);
public:
using ostream_type =
decltype(__check(declval<typename remove_reference<_Tp>::type*>()));