View Issue Details

IDProjectCategoryView StatusLast Update
0000592ascendbuild-linuxpublic2016-04-16 03:32
Reportersagitter 
Assigned Tojohn 
PriorityhighSeverityblockReproducibilityalways
Status assignedResolutionopen 
PlatformLinuxOSFedoraOS Version24+
Product Version0.9.8 
Target VersionFixed in Version 
Summary0000592: 'Curve default constructor' and GCC6
DescriptionIssue discussed and resolved in the Fedora devel mailing list:

In C++98 constructing std::vector<X> v(1); would invoke X's default constructor in the caller's context, so if the default constructor is private then the caller must be a member or friend of X. In C++11 the default constructor will be invoked deep inside std::vector, or one of its helper functions. The code is basically invalid in C++11. It should either make the default constructor public (the simplest fix), or change how the vector is constructed (which seems to come from Swig, so might be difficult).

> gcc -o tcltk/interface/AscBitmaps.os -c -fvisibility=hidden ""-O2 -g -pipe -Wall -Werror=format-security -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector-strong --param=ssp-buffer-size=4 -grecord-gcc-switches -specs=/usr/lib/rpm/redhat/redhat-hardened-cc1 -m32 -march=i686 -mtune=atom -fasynchronous-unwind-tables -Wl,-z,relro -pie -Wl,-z,now"" -fPIC -DHAVE_GCCVISIBILITY -I. -I/usr/include/tcl8.6 -I/usr/include/tcl8.6 tcltk/interface/AscBitmaps.c
In file included from /usr/include/c++/6.0.0/vector:62:0,
                 from ascxx/ascpy_wrap.cc:3038:
/usr/include/c++/6.0.0/bits/stl_construct.h: In instantiation of 'void std::_Construct(_T1*, _Args&& ...) [with _T1 = Curve; _Args = {}]':
/usr/include/c++/6.0.0/bits/stl_uninitialized.h:519:18: required from 'static _ForwardIterator std::__uninitialized_default_n_1<_TrivialValueType>::__uninit_default_n(_ForwardIterator, _Size) [with _ForwardIterator = Curve*; _Size = unsigned int; bool _TrivialValueType = false]'
/usr/include/c++/6.0.0/bits/stl_uninitialized.h:575:20: required from '_ForwardIterator std::__uninitialized_default_n(_ForwardIterator, _Size) [with _ForwardIterator = Curve*; _Size = unsigned int]'
/usr/include/c++/6.0.0/bits/stl_uninitialized.h:637:44: required from '_ForwardIterator std::__uninitialized_default_n_a(_ForwardIterator, _Size, std::allocator<_Tp>&) [with _ForwardIterator = Curve*; _Size = unsigned int; _Tp = Curve]'
/usr/include/c++/6.0.0/bits/stl_vector.h:1309:36: required from 'void std::vector<_Tp, _Alloc>::_M_default_initialize(std::vector<_Tp, _Alloc>::size_type) [with _Tp = Curve; _Alloc = std::allocator<Curve>; std::vector<_Tp, _Alloc>::size_type = unsigned int]'
/usr/include/c++/6.0.0/bits/stl_vector.h:281:30: required from 'std::vector<_Tp, _Alloc>::vector(std::vector<_Tp, _Alloc>::size_type, const allocator_type&) [with _Tp = Curve; _Alloc = std::allocator<Curve>; std::vector<_Tp, _Alloc>::size_type = unsigned int; std::vector<_Tp, _Alloc>::allocator_type = std::allocator<Curve>]'
ascxx/ascpy_wrap.cc:27027:69: required from here
/usr/include/c++/6.0.0/bits/stl_construct.h:75:7: error: 'Curve::Curve()' is private within this context
     { ::new(static_cast<void*>(__p)) _T1(std::forward<_Args>(__args)...); }
       ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
In file included from ascxx/plot.h:10:0,
                 from ascxx/ascpy_wrap.cc:4058:
ascxx/curve.h:15:2: note: declared private here
  Curve();
  ^~~~~
solvers/qrslv/qrslv.c: In function 'qrslv_get_default_parameters':
solvers/qrslv/qrslv.c:2806:9: warning: variable 'make_macros' set but not used [-Wunused-but-set-variable]
   int32 make_macros = 0;
         ^~~~~~~~~~~
solvers/qrslv/qrslv.c:2804:18: warning: variable 'lo' set but not used [-Wunused-but-set-variable]
   union parm_arg lo,hi,val;
                  ^~
solvers/qrslv/qrslv.c:2803:18: warning: variable 'sys' set but not used [-Wunused-but-set-variable]
   qrslv_system_t sys = NULL;
                  ^~~
Steps To ReproduceBuild current Ascend code with GCC-6.0.0
Additional InformationIssue resolved by applying attached patch.
TagsNo tags attached.

Relationships

Activities

sagitter

2016-04-16 03:32

reporter  

ascend-curve.patch (303 bytes)
--- ascxx/curve.orig.h	2015-10-15 20:38:04.000000000 +0200
+++ ascxx/curve.h	2016-04-14 19:15:54.561414901 +0200
@@ -12,8 +12,8 @@
 private:
 	friend class Plot;
 	explicit Curve(const Instanc &);	
-	Curve();
 public:
+	Curve();
 	Curve(const Curve &);
 	std::vector<double> x;
 	std::vector<double> y;
ascend-curve.patch (303 bytes)

Issue History

Date Modified Username Field Change
2016-04-16 03:32 sagitter New Issue
2016-04-16 03:32 sagitter Status new => assigned
2016-04-16 03:32 sagitter Assigned To => john
2016-04-16 03:32 sagitter File Added: ascend-curve.patch