Hacktoberfest 2026: die Issues, die Maintainer für den Oktober markiert haben – offen und einsteigerfreundlich. Hacktoberfest-Issues durchsuchen

Warning C4267 in vector_indexing_suite.hpp and indexing_suite_detail.hpp

Offen
#184 1 Kommentar 0 Reaktionen 0 zugewiesene Personen Auf GitHub ansehen

Dieses Issue hat noch niemand übernommen.

Bewertung

Schwierigkeit
3/5
Geschätzter Aufwand
1-2 Tage
Anfängerfreundlichkeit
38/100
Issue-Typ
Bug
Klarheit
Größtenteils klar
Aktivitätsstatus
Veraltet
Tech-Stack
cpp, python
Bereich
api

Rechercherichtung

Beginne mit boost/python/suite/indexing/vector_indexing_suite.hpp und boost/python/suite/indexing/detail/indexing_suite_detail.hpp an den gemeldeten Warnstellen. Kompiliere das bereitgestellte vector_indexing_suite-Beispiel mit Visual Studio 2017 und untersuche die betroffene Indexarithmetik. Als erledigt gilt die Aufgabe, wenn das Beispiel ohne C4267-Warnungen erstellt wird und das Indexierungsverhalten erhalten bleibt.

Vom Indexierungsmodell aus dem Issue-Text verfasst.

Beschreibung

Usage of boost::python::vector_indexing_suite leads to a warning :
boost/python/suite/indexing/detail/indexing_suite_detail.hpp(619): warning C4267: '+=': conversion from 'size_t' to 'long', possible loss of data

Here's a snippet of code that produces the warning.

#pragma warning(push)
#pragma warning(disable:4244)
// See https://svn.boost.org/trac10/ticket/3353 for 4244
#include <boost/python/suite/indexing/vector_indexing_suite.hpp>
#pragma warning(pop)

void test()
{
    boost::python::class_<std::vector<double>>("DoubleVec")
        .def(boost::python::vector_indexing_suite<std::vector<double> >())
        ;
}

Here's the output of VS2017:

1>test.cpp
1>C:\ThirdParty\1.8.0\win64-vc14\boost\include\boost-1_63\boost/python/suite/indexing/vector_indexing_suite.hpp(176): warning C4267: '+=': conversion from 'size_t' to 'long', possible loss of data
1>C:\ThirdParty\1.8.0\win64-vc14\boost\include\boost-1_63\boost/python/suite/indexing/vector_indexing_suite.hpp(170): note: while compiling class template member function 'unsigned __int64 boost::python::vector_indexing_suite<std::vector<double,std::allocator<_Ty>>,false,boost::python::detail::final_vector_derived_policies<Container,false>>::convert_index(Container &,PyObject *)'
1>        with
1>        [
1>            _Ty=double,
1>            Container=std::vector<double,std::allocator<double>>
1>        ]
1>C:\ThirdParty\1.8.0\win64-vc14\boost\include\boost-1_63\boost/python/suite/indexing/indexing_suite.hpp(261): note: see reference to function template instantiation 'unsigned __int64 boost::python::vector_indexing_suite<std::vector<double,std::allocator<_Ty>>,false,boost::python::detail::final_vector_derived_policies<Container,false>>::convert_index(Container &,PyObject *)' being compiled
1>        with
1>        [
1>            _Ty=double,
1>            Container=std::vector<double,std::allocator<double>>
1>        ]
1>C:\Users\Cyril\dev\test.cpp(9): note: see reference to class template instantiation 'boost::python::vector_indexing_suite<std::vector<double,std::allocator<_Ty>>,false,boost::python::detail::final_vector_derived_policies<Container,false>>' being compiled
1>        with
1>        [
1>            _Ty=double,
1>            Container=std::vector<double,std::allocator<double>>
1>        ]
1>C:\ThirdParty\1.8.0\win64-vc14\boost\include\boost-1_63\boost/bind/placeholders.hpp(54): note: see reference to class template instantiation 'boost::arg<9>' being compiled
1>C:\ThirdParty\1.8.0\win64-vc14\boost\include\boost-1_63\boost/bind/placeholders.hpp(53): note: see reference to class template instantiation 'boost::arg<8>' being compiled
1>C:\ThirdParty\1.8.0\win64-vc14\boost\include\boost-1_63\boost/bind/placeholders.hpp(52): note: see reference to class template instantiation 'boost::arg<7>' being compiled
1>C:\ThirdParty\1.8.0\win64-vc14\boost\include\boost-1_63\boost/bind/placeholders.hpp(51): note: see reference to class template instantiation 'boost::arg<6>' being compiled
1>C:\ThirdParty\1.8.0\win64-vc14\boost\include\boost-1_63\boost/bind/placeholders.hpp(50): note: see reference to class template instantiation 'boost::arg<5>' being compiled
1>C:\ThirdParty\1.8.0\win64-vc14\boost\include\boost-1_63\boost/bind/placeholders.hpp(49): note: see reference to class template instantiation 'boost::arg<4>' being compiled
1>C:\ThirdParty\1.8.0\win64-vc14\boost\include\boost-1_63\boost/bind/placeholders.hpp(48): note: see reference to class template instantiation 'boost::arg<3>' being compiled
1>C:\ThirdParty\1.8.0\win64-vc14\boost\include\boost-1_63\boost/bind/placeholders.hpp(47): note: see reference to class template instantiation 'boost::arg<2>' being compiled
1>C:\ThirdParty\1.8.0\win64-vc14\boost\include\boost-1_63\boost/bind/placeholders.hpp(46): note: see reference to class template instantiation 'boost::arg<1>' being compiled
1>C:\ThirdParty\1.8.0\win64-vc14\boost\include\boost-1_63\boost/python/suite/indexing/detail/indexing_suite_detail.hpp(605): warning C4267: '+=': conversion from 'size_t' to 'long', possible loss of data
1>C:\ThirdParty\1.8.0\win64-vc14\boost\include\boost-1_63\boost/python/suite/indexing/detail/indexing_suite_detail.hpp(590): note: while compiling class template member function 'void boost::python::detail::slice_helper<Container,DerivedPolicies,boost::python::detail::no_proxy_helper<Container,DerivedPolicies,boost::python::detail::container_element<Container,Index,DerivedPolicies>,Index>,Data,Index>::base_get_slice_data(Container &,PySliceObject *,Index &,Index &)'
1>        with
1>        [
1>            Container=std::vector<double,std::allocator<double>>,
1>            DerivedPolicies=boost::python::detail::final_vector_derived_policies<std::vector<double,std::allocator<double>>,false>,
1>            Index=unsigned __int64,
1>            Data=double
1>        ]
1>C:\ThirdParty\1.8.0\win64-vc14\boost\include\boost-1_63\boost/python/suite/indexing/detail/indexing_suite_detail.hpp(695): note: see reference to function template instantiation 'void boost::python::detail::slice_helper<Container,DerivedPolicies,boost::python::detail::no_proxy_helper<Container,DerivedPolicies,boost::python::detail::container_element<Container,Index,DerivedPolicies>,Index>,Data,Index>::base_get_slice_data(Container &,PySliceObject *,Index &,Index &)' being compiled
1>        with
1>        [
1>            Container=std::vector<double,std::allocator<double>>,
1>            DerivedPolicies=boost::python::detail::final_vector_derived_policies<std::vector<double,std::allocator<double>>,false>,
1>            Index=unsigned __int64,
1>            Data=double
1>        ]
1>C:\ThirdParty\1.8.0\win64-vc14\boost\include\boost-1_63\boost/python/suite/indexing/indexing_suite.hpp(256): note: see reference to class template instantiation 'boost::python::detail::slice_helper<Container,DerivedPolicies,boost::python::detail::no_proxy_helper<Container,DerivedPolicies,boost::python::detail::container_element<Container,Index,DerivedPolicies>,Index>,Data,Index>' being compiled
1>        with
1>        [
1>            Container=std::vector<double,std::allocator<double>>,
1>            DerivedPolicies=boost::python::detail::final_vector_derived_policies<std::vector<double,std::allocator<double>>,false>,
1>            Index=unsigned __int64,
1>            Data=double
1>        ]
1>C:\ThirdParty\1.8.0\win64-vc14\boost\include\boost-1_63\boost/python/suite/indexing/indexing_suite.hpp(253): note: while compiling class template member function 'void boost::python::indexing_suite<Container,DerivedPolicies,false,false,double,unsigned __int64,double>::base_delete_item(Container &,PyObject *)'
1>        with
1>        [
1>            Container=std::vector<double,std::allocator<double>>,
1>            DerivedPolicies=boost::python::detail::final_vector_derived_policies<std::vector<double,std::allocator<double>>,false>
1>        ]
1>C:\ThirdParty\1.8.0\win64-vc14\boost\include\boost-1_63\boost/python/suite/indexing/indexing_suite.hpp(186): note: see reference to function template instantiation 'void boost::python::indexing_suite<Container,DerivedPolicies,false,false,double,unsigned __int64,double>::base_delete_item(Container &,PyObject *)' being compiled
1>        with
1>        [
1>            Container=std::vector<double,std::allocator<double>>,
1>            DerivedPolicies=boost::python::detail::final_vector_derived_policies<std::vector<double,std::allocator<double>>,false>
1>        ]
1>C:\ThirdParty\1.8.0\win64-vc14\boost\include\boost-1_63\boost/python/suite/indexing/vector_indexing_suite.hpp(50): note: see reference to class template instantiation 'boost::python::indexing_suite<Container,DerivedPolicies,false,false,double,unsigned __int64,double>' being compiled
1>        with
1>        [
1>            Container=std::vector<double,std::allocator<double>>,
1>            DerivedPolicies=boost::python::detail::final_vector_derived_policies<std::vector<double,std::allocator<double>>,false>
1>        ]
1>C:\ThirdParty\1.8.0\win64-vc14\boost\include\boost-1_63\boost/python/suite/indexing/detail/indexing_suite_detail.hpp(619): warning C4267: '+=': conversion from 'size_t' to 'long', possible loss of data

I'm using Boost 1.63, VisualStudio 2017 15.5.4.

Vorherrschende Sprache
C++
Sterne
537
Forks
223
Ø Merge
11 Std. 22 Min.
Gemergte PRs (30 T.)
2

Beitragsleitfaden

Für dieses Repository ist kein Beitragsleitfaden indexiert

Erste Schritte

  1. Lesen Sie das ganze Issue und danach den Beitragsleitfaden des Projekts.
  2. Schreiben Sie ins Issue, dass Sie es übernehmen — das erspart doppelte Arbeit.
  3. Forken Sie das Repository und arbeiten Sie in einem Branch.
  4. Öffnen Sie einen Pull Request, der die Issue-Nummer nennt.

Mehr aus boostorg/python

Alle Issues in boostorg/python

Ähnliche Issues

Weitere Issues zu C++

Neue Issues direkt in Ihr Postfach

Eine kurze Übersicht über anfängerfreundliche GitHub-Issues.