Xcode: 错误:对于函数式的转换或类型构造,预期'('。
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Xcode: 错误:对于函数式的转换或类型构造,预期'('。相关的知识,希望对你有一定的参考价值。
当我试图用xcode编译以下代码时,我遇到了这个错误。在Windows上用Visual Studio编译时没有问题。
template <typename OutT, typename MayaArrayT>
void DumpMayaArray(std::vector<OutT>& out, const MayaArrayT& source)
{
using MayaElementT = decltype(MayaArrayT()[unsigned int()]); // error happens in this line!
static_assert(std::is_same<MayaElementT, OutT&>::value, "array type mismatch");
这段代码要做的是,从MayaArrayT的返回类型中获取MayaArrayT元素的类型。::operator[]( unsigned int index );
遗憾的是,没有其他方法来获取MayaArrayT的元素类型。
答案
decltype中的代码实际上是调用了 MayaArrayT::operator(unsigned int)
. 然而,以下的论点 decltype
实际上并没有被评估,所以你需要做的是 假装 你在打电话,像这样。
using MayaElementT = decltype(
std::declval<MayaArrayT&>()[std::declval<unsigned int>()]
);
以上是关于Xcode: 错误:对于函数式的转换或类型构造,预期'('。的主要内容,如果未能解决你的问题,请参考以下文章
explicit:C++规定,当定义了只有一个参数的构造函数时,同时也定义了一种隐式的类型转换
C++ 错误:'(' 标记之前的预期构造函数、析构函数或类型转换
c++ 错误:预期构造函数、析构函数或在“(”标记之前的类型转换