gpt4 book ai didi

c++ - Visual Studio 中的 Decltype 转换运算符

转载 作者:行者123 更新时间:2023-12-03 18:29:46 25 4
gpt4 key购买 nike

考虑以下代码示例:

#include <algorithm>

template<class T, class U>
struct lazy_caller{
lazy_caller(T &&one, U &&two) : m_one(one), m_two(two){}

operator decltype(std::max(T(), U()))() const {
return std::max(m_one, m_two);
}

T m_one;
U m_two;
};

int main()
{
lazy_caller<int, int> caller(1, 2);
int i = caller;
return 0;
}

正如您想象的那样,在实际代码中,我想做更复杂的类型推导来创建合适的转换运算符。无论如何 - 这段代码不能在 VS2017 中编译(我想早期的代码也是如此) - 所以我想问一下这个问题是否有任何解决方法?我已经尝试过:
operator auto () const

它还会生成编译器错误,例如:
source_file.cpp(8): error C2833: 'operator function-style cast' is not a recognized operator or type

msvc 有没有解决这个问题的方法?
因为 gcc 没有问题 operator auto也不是 operator decltype(..) .

最佳答案

你和 operator auto () const 很亲近.这建议 workaround涉及使用 C++11 函数语法:

operator auto() const -> decltype(std::max(T(), U())) {
return std::max(m_one, m_two);
}

关于c++ - Visual Studio 中的 Decltype 转换运算符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47609018/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com