C++ C++;在同一命名空间中找不到类

C++ C++;在同一命名空间中找不到类,c++,namespaces,C++,Namespaces,更新:复制错误的最小代码: 在TypeTraits.hpp中: namespace fl { namespace utilities { template <class T> struct remove_reference { using type = T; }; template <class T> struct remove_ref

更新:复制错误的最小代码: 在TypeTraits.hpp中:

namespace fl
{
    namespace utilities
    {
        template <class T>
        struct remove_reference
        {
            using type = T;
        };

        template <class T>
        struct remove_reference<T&>
        {
            using type = T;
        };

        template <class T>
        struct remove_reference<T&&>
        {
            using type = T;
        };
    }
}
名称空间fl
{
命名空间实用程序
{
模板
结构删除\u引用
{
使用类型=T;
};
模板
结构删除\u引用
{
使用类型=T;
};
模板
结构删除\u引用
{
使用类型=T;
};
}
}
在TypeTraits.h中

#include "TypeTraits.hpp"
namespace ftd
{
    template <class T> using remove_reference = fl::utilities::remove_reference<T>;
}
#包括“TypeTraits.hpp”
名称空间ftd
{
使用remove\u reference=fl::utilities::remove\u reference的模板;
}
在实用程序h中:

#include "TypeTraits.h"
namespace ftd
{
    template <class T>
    constexpr T&& forward(typename remove_reference<T>::type& t) noexcept
    {
        return static_cast<T&&>(t);
    }

    template <class T>
    constexpr T&& forward(typename remove_reference<T>::type&& t) noexcept
    {
        return static_cast<T&&>(t);
    }
}
#包括“TypeTraits.h”
名称空间ftd
{
模板
constexpr T&&forward(typename remove\u reference::type&T)noexcept
{
返回静态_-cast(t);
}
模板
constexpr T&&forward(typename remove_reference::type&&T)无例外
{
返回静态_-cast(t);
}
}
第一次使用正向功能: 在List.hpp中

#include "Utility.h"
namespace fl
{
    namespace containers
    {
        struct NodeBase { /* code... */ };
        /* code... */
        template <class T> struct ListNode : public NodeBase
        {

            /* Code... */
            template <class... Args>
            ListNode(Args&&... args) : m_data(ftd::forward<T>(args)...) {}
            /* Code... */
            T m_data;
        };
    }
}
#包括“Utility.h”
名称空间fl
{
命名空间容器
{
结构节点库{/*代码…*/};
/*代码*/
模板结构ListNode:公共节点库
{
/*代码*/
模板
ListNode(Args&&…Args):m_数据(ftd::forward(Args)…{}
/*代码*/
T m_数据;
};
}
}

错误:没有名为“remove_reference”的模板;你是说“std::remove_reference”吗?

在单独的文件中@Drew DormannA C++编译器不知道单独的文件。预处理器将用指定文件的内容替换每个
#include
语句,生成一个称为“编译单元”的字节流。也使用clang-3.5为我编译,我将它们放在单独的文件中。Drew指出,这不应该是一个问题。为了解决您的问题,您应该在单独的文件中发布一个@Drew DormannA C++编译器不知道单独的文件。预处理器将用指定文件的内容替换每个
#include
语句,生成一个称为“编译单元”的字节流。也使用clang-3.5为我编译,我将它们放在单独的文件中。Drew指出,这不应该是一个问题。为了解决您的问题,您应该发布一个。