Hacktoberfest 2026 : les issues que les mainteneurs ont marquées pour octobre, ouvertes et accessibles aux débutants. Parcourir les issues Hacktoberfest

Warning C4267 in vector_indexing_suite.hpp and indexing_suite_detail.hpp

Ouverte
#184 1 commentaire 0 réactions 0 personnes assignées Voir sur GitHub

Personne n'a encore pris cette issue.

Évaluation

Difficulté
3/5
Temps estimé
1-2 jours
Accessibilité débutants
38/100
Type d'issue
Bug
Clarté
Plutôt claire
Activité
À l'abandon
Stack technique
cpp, python
Domaine
api

Piste de recherche

Commencez par boost/python/suite/indexing/vector_indexing_suite.hpp et boost/python/suite/indexing/detail/indexing_suite_detail.hpp aux emplacements des avertissements signalés. Compilez l’exemple vector_indexing_suite fourni avec Visual Studio 2017 et examinez l’arithmétique d’index concernée. Le travail est terminé lorsque l’exemple se compile sans avertissements C4267 tout en préservant le comportement de l’indexation.

Rédigé par le modèle d'indexation à partir du texte de l'issue.

Description

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.

Langage dominant
C++
Étoiles
537
Forks
223
Merge moyen
11 h 22 min
PR mergées (30 j)
2

Guide de contribution

Aucun guide de contribution indexé pour ce dépôt

Par où commencer

  1. Lisez l'issue en entier, puis le guide de contribution du projet.
  2. Signalez en commentaire que vous la prenez — cela évite que deux personnes fassent le même travail.
  3. Forkez le dépôt et travaillez sur une branche.
  4. Ouvrez une pull request qui référence le numéro de l'issue.

Autres issues de boostorg/python

Toutes les issues de boostorg/python

Issues similaires

Plus d'issues C++

Recevez les nouvelles issues par e-mail

Un résumé court des issues GitHub adaptées aux débutants.