BehaviorTree.CPP의 C++ 표준 준수 수준 (C++ Standard Compliance of BehaviorTree.CPP)
1. 개요
BehaviorTree.CPP는 최신 C++ 표준을 적극적으로 활용하여 타입 안전성, 코드 가독성, 성능을 향상시킨다. 본 절에서는 라이브러리가 사용하는 C++ 표준 수준과 주요 기능을 다룬다.
2. C++ 표준 요구 사항
| 버전 | 최소 C++ 표준 |
|---|---|
| 3.x | C++14 |
| 4.x | C++17 |
BehaviorTree.CPP 4.x는 C++17을 최소 요구하며, std::optional, std::any, std::string_view, 구조화된 바인딩(structured bindings) 등의 C++17 기능을 활용한다.
3. 주요 C++ 기능 활용
3.1 C++17 기능
| 기능 | 활용 예 |
|---|---|
std::any | 블랙보드의 타입 소거(type erasure) |
std::optional | 포트 값의 선택적 존재 |
std::string_view | 문자열 매개변수의 효율적 전달 |
std::variant | 노드 상태의 타입 안전 표현 |
| 구조화된 바인딩 | auto [key, value] = ... |
if constexpr | 템플릿 기반 조건부 컴파일 |
3.2 스마트 포인터
std::shared_ptr<BT::Blackboard> blackboard;
std::unique_ptr<BT::TreeNode> node;
메모리 관리에 스마트 포인터를 사용하여 리소스 누수를 방지한다.
4. 컴파일러 호환성
| 컴파일러 | 최소 버전 |
|---|---|
| GCC | 7.0 이상 |
| Clang | 5.0 이상 |
| MSVC | VS 2017 15.7 이상 |
5. 빌드 시스템
BehaviorTree.CPP는 CMake를 빌드 시스템으로 사용한다.
find_package(behaviortree_cpp REQUIRED)
target_link_libraries(my_target BT::behaviortree_cpp)
ROS2 환경에서는 ament_cmake와 통합된다.
6. 참고 문헌
- BehaviorTree.CPP GitHub. https://github.com/BehaviorTree/BehaviorTree.CPP
- ISO/IEC 14882:2017. Programming Language C++.
| 버전 | 날짜 | 변경 사항 |
|---|---|---|
| v0.1 | 2026-04-05 | 초안 작성 |