使用Xcode 10 GM编译以下程序时:
#include <iostream>
#include <string>
#include <variant>
void hello(int) {
std::cout << "hello, int" << std::endl;
}
void hello(std::string const & msg) {
std::cout << "hello, " << msg << std::endl;
}
int main(int argc, const char * argv[]) {
// insert code here...
std::variant< int, std::string > var;
std::visit
(
[]( auto parameter )
{
hello( parameter );
},
var
);
return 0;
}
Run Code Online (Sandbox Code Playgroud)
我收到以下错误:
main.cpp:27:5:调用不可用的函数'visit':在macOS 10.14中引入
但是,如果我将最小部署目标更改为macOS 10.14,则代码编译正常并且可以正常运行,即使我正在运行macOS 10.13.
由于std::visit是功能模板,并且不应该依赖于操作系统版本(我通过在较低版本的mac上运行代码而不是实际支持的证明),这应该被视为错误并报告给Apple还是这种预期的行为?
编译iOS时会出现同样的情况(iOS 12是最低限度的预期).