Skip to content

Commit 67dd258

Browse files
committed
Use defined for PYBIND11_HAS_OPTIONAL, PYBIND11_HAS_EXP_OPTIONAL, PYBIND11_HAS_VARIANT
These variables are not set in certain circumstances, and if the project using pybind11 sets -Wundef, the warnings will show. In all other usages outside of stl.h, ifdef/defined has already been used, this commit converts the remaining ones under stl.h. ext/pybind11/include/pybind11/stl.h:292:5: error: "PYBIND11_HAS_OPTIONAL" is not defined, evaluates to 0 [-Werror=undef] 292 | #if PYBIND11_HAS_OPTIONAL | ^~~~~~~~~~~~~~~~~~~~~ ext/pybind11/include/pybind11/stl.h:300:5: error: "PYBIND11_HAS_EXP_OPTIONAL" is not defined, evaluates to 0 [-Werror=undef] 300 | #if PYBIND11_HAS_EXP_OPTIONAL | ^~~~~~~~~~~~~~~~~~~~~~~~~ ext/pybind11/include/pybind11/stl.h:372:5: error: "PYBIND11_HAS_VARIANT" is not defined, evaluates to 0 [-Werror=undef] 372 | #if PYBIND11_HAS_VARIANT | ^~~~~~~~~~~~~~~~~~~~
1 parent fbc7563 commit 67dd258

File tree

2 files changed

+4
-4
lines changed

2 files changed

+4
-4
lines changed

include/pybind11/stl.h

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -289,15 +289,15 @@ template<typename T> struct optional_caster {
289289
PYBIND11_TYPE_CASTER(T, _("Optional[") + value_conv::name + _("]"));
290290
};
291291

292-
#if PYBIND11_HAS_OPTIONAL
292+
#if defined(PYBIND11_HAS_OPTIONAL)
293293
template<typename T> struct type_caster<std::optional<T>>
294294
: public optional_caster<std::optional<T>> {};
295295

296296
template<> struct type_caster<std::nullopt_t>
297297
: public void_caster<std::nullopt_t> {};
298298
#endif
299299

300-
#if PYBIND11_HAS_EXP_OPTIONAL
300+
#if defined(PYBIND11_HAS_EXP_OPTIONAL)
301301
template<typename T> struct type_caster<std::experimental::optional<T>>
302302
: public optional_caster<std::experimental::optional<T>> {};
303303

@@ -369,7 +369,7 @@ struct variant_caster<V<Ts...>> {
369369
PYBIND11_TYPE_CASTER(Type, _("Union[") + detail::concat(make_caster<Ts>::name...) + _("]"));
370370
};
371371

372-
#if PYBIND11_HAS_VARIANT
372+
#if defined(PYBIND11_HAS_VARIANT)
373373
template <typename... Ts>
374374
struct type_caster<std::variant<Ts...>> : variant_caster<std::variant<Ts...>> { };
375375
#endif

tests/CMakeLists.txt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -197,7 +197,7 @@ function(pybind11_enable_warnings target_name)
197197
target_compile_options(${target_name} PRIVATE /W4)
198198
elseif(CMAKE_CXX_COMPILER_ID MATCHES "(GNU|Intel|Clang)")
199199
target_compile_options(${target_name} PRIVATE -Wall -Wextra -Wconversion -Wcast-qual
200-
-Wdeprecated)
200+
-Wdeprecated -Wundef)
201201
endif()
202202

203203
if(PYBIND11_WERROR)

0 commit comments

Comments
 (0)