octave-bug-tracker
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Octave-bug-tracker] [bug #48753] KeyboardTranslator.h macros failing wi


From: Dan Sebald
Subject: [Octave-bug-tracker] [bug #48753] KeyboardTranslator.h macros failing with Qt5 and GCC 4.8.4
Date: Wed, 10 Aug 2016 20:08:51 +0000 (UTC)
User-agent: Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:42.0) Gecko/20100101 Firefox/42.0

URL:
  <http://savannah.gnu.org/bugs/?48753>

                 Summary: KeyboardTranslator.h macros failing with Qt5 and GCC
4.8.4
                 Project: GNU Octave
            Submitted by: sebald
            Submitted on: Wed 10 Aug 2016 08:08:49 PM GMT
                Category: GUI
                Severity: 3 - Normal
                Priority: 5 - Normal
              Item Group: Build Failure
                  Status: None
             Assigned to: None
         Originator Name: 
        Originator Email: 
             Open/Closed: Open
         Discussion Lock: Any
                 Release: dev
        Operating System: GNU/Linux

    _______________________________________________________

Details:

With Qt5 build (gcc 4.8.4) I'm seeing the following error(s):


/home/sebald/octave/octave/octave/libgui/qterminal/libqterminal/unix/KeyboardTranslator.h:101:26:
error: use of deleted function 'QBasicAtomicPointer<X>&
QBasicAtomicPointer<X>::operator=(const QBasicAtomicPointer<X>&) [with X =
KeyboardTranslatorManager]'
         _k_static_##NAME = 0;                                                
 \
                          ^
/home/sebald/octave/octave/octave/libgui/qterminal/libqterminal/unix/KeyboardTranslator.h:61:37:
note: in expansion of macro 'K_GLOBAL_STATIC_WITH_ARGS'
 #define K_GLOBAL_STATIC(TYPE, NAME) K_GLOBAL_STATIC_WITH_ARGS(TYPE, NAME,
())
                                     ^
/home/sebald/octave/octave/octave/libgui/qterminal/libqterminal/unix/KeyboardTranslator.cpp:892:1:
note: in expansion of macro 'K_GLOBAL_STATIC'
 K_GLOBAL_STATIC( KeyboardTranslatorManager , theKeyboardTranslatorManager )
 ^
In file included from /usr/include/qt5/QtCore/qatomic.h:47:0,
                 from /usr/include/qt5/QtCore/qglobalstatic.h:47,
                 from /usr/include/qt5/QtCore/qglobal.h:1034,
                 from /usr/include/qt5/QtCore/qchar.h:45,
                 from /usr/include/qt5/QtCore/qhash.h:45,
                 from /usr/include/qt5/QtCore/QHash:1,
                 from
/home/sebald/octave/octave/octave/libgui/qterminal/libqterminal/unix/KeyboardTranslator.h:28,
                 from
/home/sebald/octave/octave/octave/libgui/qterminal/libqterminal/unix/KeyboardTranslator.cpp:25:
/usr/include/qt5/QtCore/qbasicatomic.h:258:26: error: declared here
     QBasicAtomicPointer &operator=(const QBasicAtomicPointer &) = delete;
                          ^
make[2]: ***
[libgui/qterminal/libqterminal/unix/libgui_qterminal_libqterminal_la-KeyboardTranslator.lo]
Error 1


which is attributable to C++11 compatibility issues.  See

https://savannah.gnu.org/bugs/?40252#comment19

I don't want to upgrade compilers to see if that fixes anything.  Other than
it being more work than I want to attempt, this is the compiler used for a
recent Mint Rosa (Ubuntu) bundle.  How can Octave expect to be accepted if it
requires a compiler greater than what the main bundles are using?

Looking at the macro code, which probably shouldn't even be in the project, it
seems to use some Qt macros (and if Qt version is too low, define its own Qt
macro).  The following lines of code seem somewhat non Qt5/Template friendly:

+verbatim
    static void destroy()                                                     
\
    {                                                                         
\
        _k_static_##NAME##_destroyed = true;                                  
\
        TYPE *x = _k_static_##NAME;                                           
\
        _k_static_##NAME = 0;                                                 
\
        delete x;                                                             
\
    }                                                                         
\


For example, in one instance it is:


static QBasicAtomicPointer<TYPE > _k_static_##NAME =
Q_BASIC_ATOMIC_INITIALIZER(0);


while above the line of code is:


        _k_static_##NAME = 0;


Doesn't seem consistent.  Qt5 headers probably use the macros in a more
elegant way.

I'm going to search around to see if there is a better way to handle keyboard
translation Qt.  To me, it seems it should be easier because that is the
purpose of multiplatform Qt.




    _______________________________________________________

Reply to this item at:

  <http://savannah.gnu.org/bugs/?48753>

_______________________________________________
  Message sent via/by Savannah
  http://savannah.gnu.org/




reply via email to

[Prev in Thread] Current Thread [Next in Thread]