Index: trunk/nv/stl/type_traits/function.hh
===================================================================
--- trunk/nv/stl/type_traits/function.hh	(revision 530)
+++ trunk/nv/stl/type_traits/function.hh	(revision 531)
@@ -106,5 +106,5 @@
 
 // TODO: see if const volatile are needed under MSVC - we remove them after all
-#if NV_COMPILER == NV_MSVC 
+#if NV_COMPILER == NV_MSVC && NV_ARCHITECTURE == NV_32BIT
 #define NV_EMIT_WEAK_RESULT_TYPE_CALLDECL( CALLDECL ) \
 		template < typename R, typename... Args > struct weak_result_type_impl< R CALLDECL( Args... ) > { typedef R result_type; }; \
Index: trunk/nv/stl/type_traits/primary.hh
===================================================================
--- trunk/nv/stl/type_traits/primary.hh	(revision 530)
+++ trunk/nv/stl/type_traits/primary.hh	(revision 531)
@@ -75,5 +75,5 @@
 
 	template < typename F > struct is_function_pointer : false_type {};
-#if NV_COMPILER == NV_MSVC
+#if NV_COMPILER == NV_MSVC && NV_ARCHITECTURE == NV_32BIT
 	template < typename R, typename... Args > struct is_function_pointer< R( __cdecl * )( Args... ) > : true_type{};
 	template < typename R, typename... Args > struct is_function_pointer< R( __stdcall * )( Args... ) > : true_type{};
@@ -85,5 +85,5 @@
 
 	template < typename C > struct is_member_function_pointer : false_type {};
-#if NV_COMPILER == NV_MSVC
+#if NV_COMPILER == NV_MSVC && NV_ARCHITECTURE == NV_32BIT
 #define NV_IS_MEMFNPTR( call_conv ) \
 	template < typename R, typename C, typename... Args > struct is_member_function_pointer< R( call_conv C::* )( Args... ) > : true_type{}; \
Index: trunk/nv/stl/type_traits/transforms.hh
===================================================================
--- trunk/nv/stl/type_traits/transforms.hh	(revision 530)
+++ trunk/nv/stl/type_traits/transforms.hh	(revision 531)
@@ -246,5 +246,5 @@
 
 
-#if NV_COMPILER == NV_MSVC
+#if NV_COMPILER == NV_MSVC && NV_ARCHITECTURE == NV_32BIT
 	template < typename F, typename... Args >
 	struct result_of < F __cdecl ( Args... ) > { typedef decltype( invoke( declval<F>(), declval<Args>()... ) ) type; };
