自动返回类型匹配 void

gre*_*f82 2 c++ c++11 c++14

这个代码合法吗?它可以编译,但我想知道返回值会发生什么。未定义的行为?

class Foo {
public:
    void test1() {

    }
    auto test() -> decltype(test1()) {
        return test1(); //<---return void here!
    }
};
Run Code Online (Sandbox Code Playgroud)

MFn*_*Fnx 6

代码是合法的。auto推导出void一个void函数可以返回另一个void函数。一个void函数甚至可以

return static_cast<void>("I'm a void");
Run Code Online (Sandbox Code Playgroud)