我在 linux 上使用 Clang 3.3 编译一段 C++ 代码时遇到了一些麻烦。但是,同一段代码可以使用 gcc 4.8.2 以及 Intel 编译器进行编译。所以我想我的代码是否真的合法。通常我更相信叮当这些问题;)
无论如何,这是代码片段:
namespace test {
template<class SCALAR=double>
struct Foo {
public:
template<class SCALAR_ARG>
friend Foo<SCALAR_ARG> create_Foo( );
typedef SCALAR scalar_t;
};
template<class SCALAR_ARG=double>
Foo<SCALAR_ARG> create_Foo( )
{
typedef Foo<SCALAR_ARG> impl_t;
return impl_t();
}
}
struct Dummy {
typedef Dummy impl_t;
};
int main() {
typedef test::Foo<Dummy> foo_t;
typedef typename foo_t::scalar_t scalar_t;
Dummy egv_;
test::create_Foo();
return 0;
}
你怎么看?我应该将它作为 Clang 中的错误发布还是实际上格式不正确?
提前致谢, 拉斐尔