From c5eeecca7c760fdae052e95318eb5ecf0c5147dd Mon Sep 17 00:00:00 2001 From: Zeng Jinle <32832641+sneaxiy@users.noreply.github.com> Date: Mon, 6 May 2019 02:36:36 -0500 Subject: [PATCH] Fix tensor_py.h (#17195) * fix tensor_py,test=develop * change class name,test=develop --- paddle/fluid/pybind/tensor_py.h | 35 +++++++++++++++++---------------- 1 file changed, 18 insertions(+), 17 deletions(-) diff --git a/paddle/fluid/pybind/tensor_py.h b/paddle/fluid/pybind/tensor_py.h index fd48f26f41..cec21f4007 100644 --- a/paddle/fluid/pybind/tensor_py.h +++ b/paddle/fluid/pybind/tensor_py.h @@ -431,14 +431,14 @@ inline void PyCUDAPinnedTensorSetFromArray( namespace details { template -constexpr bool IsValidDTypeToPyArray() { - return false; -} - -#define DECLARE_VALID_DTYPE_TO_PY_ARRAY(type) \ - template <> \ - constexpr bool IsValidDTypeToPyArray() { \ - return true; \ +struct ValidDTypeToPyArrayChecker { + static constexpr bool kValue = false; +}; + +#define DECLARE_VALID_DTYPE_TO_PY_ARRAY(type) \ + template <> \ + struct ValidDTypeToPyArrayChecker { \ + static constexpr bool kValue = true; \ } DECLARE_VALID_DTYPE_TO_PY_ARRAY(platform::float16); @@ -452,15 +452,16 @@ DECLARE_VALID_DTYPE_TO_PY_ARRAY(int64_t); inline std::string TensorDTypeToPyDTypeStr( framework::proto::VarType::Type type) { -#define TENSOR_DTYPE_TO_PY_DTYPE(T, proto_type) \ - if (type == proto_type) { \ - if (std::is_same::value) { \ - return "e"; \ - } else { \ - PADDLE_ENFORCE(IsValidDTypeToPyArray, \ - "This type of tensor cannot be expose to Python"); \ - return py::format_descriptor::format(); \ - } \ +#define TENSOR_DTYPE_TO_PY_DTYPE(T, proto_type) \ + if (type == proto_type) { \ + if (std::is_same::value) { \ + return "e"; \ + } else { \ + constexpr auto kIsValidDType = ValidDTypeToPyArrayChecker::kValue; \ + PADDLE_ENFORCE(kIsValidDType, \ + "This type of tensor cannot be expose to Python"); \ + return py::format_descriptor::format(); \ + } \ } _ForEachDataType_(TENSOR_DTYPE_TO_PY_DTYPE); -- GitLab