Date: prev next · Thread: first prev next last
2011 Archives by date, by thread · List index


On 09/18/2011 11:23 PM, julien2412 wrote:
Hello,

On LO-dev IRC, i met someone with this pb
/home/luc/git/core/vcl/unx/gtk/a11y/atkutil.cxx:322:60: error: call of
overloaded
‘insert(com::sun::star::uno::Reference<com::sun::star::accessibility::XAccessibleEventBroadcaster>&)’
is ambiguous

detail logs :
[ build CXX ] vcl/unx/gtk/a11y/atkutil
R=/home/luc/git&&  S=$R/core&&  O=$S/solver/unxlngx6.pro&&
W=$S/workdir/unxlngx6.pro&&   mkdir -p $W/CxxObject/vcl/unx/gtk/a11y/
$W/Dep/CxxObject/vcl/unx/gtk/a11y/&&  ccache g++ -DCPPU_ENV=gcc3 -DCUI
-DENABLE_GRAPHITE -DENABLE_GTK -DENABLE_LAYOUT=0
-DENABLE_LAYOUT_EXPERIMENTAL=0 -DGCC -DGXX_INCLUDE_PATH=/usr/include/c++/4.6
-DHAVE_GCC_VISIBILITY_FEATURE -DLINUX -DNDEBUG -DOPTIMIZE
-DOSL_DEBUG_LEVEL=0 -DPRODUCT -DPRODUCT_FULL -DSOLAR_JAVA -DSUPD=350 -DUNIX
-
DUNX -DVCL -DX86_64 -D_PTHREADS -D_REENTRANT   -DVCLPLUG_GTK_IMPLEMENTATION
-DVERSION=\"350m1\"   -Wall -Wendif-labels -Wextra -Wshadow
-Woverloaded-virtual -Wno-non-virtual-dtor -fPIC -fmessage-length=0
-fno-common -pipe  -fvisibility=hidden  -fvisibility-inlines-hidden
-std=c++0x -Wno-deprecated-declarations   -DEXCEPTIONS_ON -fexceptions
-fno-enforce-eh-specs  -O2 -c $S/vcl/unx/gtk/a11y/atkutil.cxx -o
$W/CxxObject/vcl/unx/gtk/a11y/atkutil.o -MMD -MT $W/
CxxObject/vcl/unx/gtk/a11y/atkutil.o -MP -MF
$W/Dep/CxxObject/vcl/unx/gtk/a11y/atkutil.d -I$S/vcl/unx/gtk/a11y/
-I$O/inc/stl -I$O/inc/external -I$O/inc -I$S/solenv/unxlngx6/inc
-I$S/solenv/inc -I$S/res -I$S/solenv/inc/Xp31
-I/usr/lib/jvm/java-6-openjdk-amd64/include
-I/usr/lib/jvm/java-6-openjdk-amd64/include/linux
-I/usr/lib/jvm/java-6-openjdk-amd64/include/native_threads/include
-I$S/vcl/inc -I$S/vcl/inc/pch -I$S/solenv/inc -I$O/inc  -I$O/inc/offapi
-I$O/
inc/udkapi -pthread -I/usr/include/gtk-2.0
-I/usr/lib/x86_64-linux-gnu/gtk-2.0/include -I/usr/include/atk-1.0
-I/usr/include/gdk-pixbuf-2.0 -I/usr/include/pango-1.0
-I/usr/include/pixman-1 -I/usr/include/freetype2 -I/usr/include/libpng12
-I/usr/include/cairo -I/usr/include/gio-unix-2.0/ -I/usr/include/glib-2.0
-I/usr/lib/glib-2.0/include
/home/luc/git/core/vcl/unx/gtk/a11y/atkutil.cxx: In member function ‘void
DocumentFocusListener::attachRecursive(const
com::sun::star::uno::Reference<com::sun::star::accessibility::XAccessible>&,
const
com::sun::star::uno::Reference<com::sun::star::accessibility::XAccessibleContext>&,
const
com::sun::star::uno::Reference<com::sun::star::accessibility::XAccessibleStateSet>&)’:
/home/luc/git/core/vcl/unx/gtk/a11y/atkutil.cxx:322:60: error: call of
overloaded
‘insert(com::sun::star::uno::Reference<com::sun::star::accessibility::XAccessibleEventBroadcaster>&)’
is ambiguous
/home/luc/git/core/vcl/unx/gtk/a11y/atkutil.cxx:322:60: note: candidates
are:
/usr/include/c++/4.6/bits/stl_set.h:407:7: note: std::pair<typename
std::_Rb_tree<_Key, _Key, std::_Identity<_Key>, _Compare, typename
_Alloc::rebind<_Key>::other>::const_iterator, bool>  std::set<_Key, _Compare,
_Alloc>::insert(const value_type&) [with _Key =
com::sun::star::uno::Reference<com::sun::star::uno::XInterface>, _Compare =
std::less&lt;com::sun::star::uno::Reference&lt;com::sun::star::uno::XInterface&gt;
, _Alloc = std::allocator<com::sun::star::uno::
Reference<com::sun::star::uno::XInterface>  >, typename std::_Rb_tree<_Key,
_Key, std::_Identity<_Key>, _Compare, typename
_Alloc::rebind<_Key>::other>::const_iterator =
std::_Rb_tree_const_iterator&lt;com::sun::star::uno::Reference&lt;com::sun::star::uno::XInterface&gt;
, std::set<_Key, _Compare, _Alloc>::value_type =
com::sun::star::uno::Reference<com::sun::star::uno::XInterface>]
/usr/include/c++/4.6/bits/stl_set.h:416:7: note: std::pair<typename
std::_Rb_tree<_Key, _Key, std::_Identity<_Key>, _Compare, typename
_Alloc::rebind<_Key>::other>::const_iterator, bool>  std::set<_Key, _Compare,
_Alloc>::insert(std::set<_Key, _Compare, _Alloc>::value_type&&) [with _Key =
com::sun::star::uno::Reference<com::sun::star::uno::XInterface>, _Compare =
std::less&lt;com::sun::star::uno::Reference&lt;com::sun::star::uno::XInterface&gt;
, _Alloc = std::
allocator&lt;com::sun::star::uno::Reference&lt;com::sun::star::uno::XInterface&gt;
, typename std::_Rb_tree<_Key, _Key, std::_Identity<_Key>, _Compare,
typename _Alloc::rebind<_Key>::other>::const_iterator =
std::_Rb_tree_const_iterator&lt;com::sun::star::uno::Reference&lt;com::sun::star::uno::XInterface&gt;
, std::set<_Key, _Compare, _Alloc>::value_type =
com::sun::star::uno::Reference<com::sun::star::uno::XInterface>]

The "value_type &&" rvalue reference in the second alterntive indicates that the given GCC and standard library already support C++11 rvalue references and move semantics.

I am not sure whether it is indeed the case per the Standard wording, but this apparently lets at least claim the given GCC implementation that the given LibO code is ambiguous:

From Reference<XBroadcaster> to insert(Reference<XInterface>const&), there always has been a conversion route via Reference<XBroadcaster>::operator Reference<XInterface>const&().

I assume the given GCC thinks that there is an additional, longer route, from Reference<XBroadcaster> to insert(Reference<XInterface>&&) via the same Reference<XBroadcaster>::operator Reference<XInterface>const&() but followed by Reference<XInterface>(Reference<XInterface>const&) copy constructor. (But that would rather look like a GCC bug, as the second route is longer; maybe there is another tricky route that GCC thinks is viable, given all the magic in Reference.h.)

Anyway, one could try out whether using an explicit intermediary XReference<XInterface> variable helps, a la

if( xBroadcaster.is() )
{
  uno::Reference< uno::XInterface > xIfc( xBroadcaster );
  if( m_aRefList.insert(xIfc).second )
  {

-Stephan

Context


Privacy Policy | Impressum (Legal Info) | Copyright information: Unless otherwise specified, all text and images on this website are licensed under the Creative Commons Attribution-Share Alike 3.0 License. This does not include the source code of LibreOffice, which is licensed under the Mozilla Public License (MPLv2). "LibreOffice" and "The Document Foundation" are registered trademarks of their corresponding registered owners or are in actual use as trademarks in one or more countries. Their respective logos and icons are also subject to international copyright laws. Use thereof is explained in our trademark policy.