diff --git a/include/ndnboost/functional.hpp b/include/ndnboost/functional.hpp
index 34586bd..b14457d 100644
--- a/include/ndnboost/functional.hpp
+++ b/include/ndnboost/functional.hpp
@@ -9,8 +9,8 @@
 // $Id: functional.hpp 36246 2006-12-02 14:17:26Z andreas_huber69 $
 // ------------------------------------------------------------------------------
 
-#ifndef BOOST_FUNCTIONAL_HPP
-#define BOOST_FUNCTIONAL_HPP
+#ifndef NDNBOOST_FUNCTIONAL_HPP
+#define NDNBOOST_FUNCTIONAL_HPP
 
 #include <ndnboost/config.hpp>
 #include <ndnboost/call_traits.hpp>
@@ -18,7 +18,7 @@
 
 namespace ndnboost
 {
-#ifndef BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+#ifndef NDNBOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
     // --------------------------------------------------------------------------
     // The following traits classes allow us to avoid the need for ptr_fun
     // because the types of arguments and the result of a function can be 
@@ -116,7 +116,7 @@
         typedef A1 first_argument_type;
         typedef A2 second_argument_type;
     };
-#else // BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+#else // NDNBOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
     // --------------------------------------------------------------------------
     // If we have no partial specialisation available, decay to a situation
     // that is no worse than in the Standard, i.e., ptr_fun will be required.
@@ -140,7 +140,7 @@
         typedef typename Operation::first_argument_type  first_argument_type;
         typedef typename Operation::second_argument_type second_argument_type;
     };    
-#endif // BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+#endif // NDNBOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
     
     // --------------------------------------------------------------------------
     // unary_negate, not1
@@ -384,7 +384,7 @@
         return mem_fun1_t<S,T,A>(f);
     }
 
-#ifndef BOOST_NO_POINTER_TO_MEMBER_CONST
+#ifndef NDNBOOST_NO_POINTER_TO_MEMBER_CONST
     template<class S, class T>
     inline const_mem_fun_t<S,T> mem_fun(S (T::*f)() const)
     {
@@ -396,7 +396,7 @@
     {
         return const_mem_fun1_t<S,T,A>(f);
     }
-#endif // BOOST_NO_POINTER_TO_MEMBER_CONST
+#endif // NDNBOOST_NO_POINTER_TO_MEMBER_CONST
 
     // --------------------------------------------------------------------------
     // mem_fun_ref, etc
@@ -479,7 +479,7 @@
         return mem_fun1_ref_t<S,T,A>(f);
     }
 
-#ifndef BOOST_NO_POINTER_TO_MEMBER_CONST
+#ifndef NDNBOOST_NO_POINTER_TO_MEMBER_CONST
     template<class S, class T>
     inline const_mem_fun_ref_t<S,T> mem_fun_ref(S (T::*f)() const)
     {
@@ -491,7 +491,7 @@
     {
         return const_mem_fun1_ref_t<S,T,A>(f);
     }   
-#endif // BOOST_NO_POINTER_TO_MEMBER_CONST
+#endif // NDNBOOST_NO_POINTER_TO_MEMBER_CONST
 
     // --------------------------------------------------------------------------
     // ptr_fun
