C++11 lambda表达式 未指定返回值时,在函数体内可以与此同时包含return与return 之外的语句

C++11 lambda表达式 未指定返回值时,在函数体内可以同时包含return与return 之外的语句?
小弟在学习C++11 中lambda表达式时遇到了一个问题

在看C++Primer 第五版某个习题答案的时候发现了一段使用lambda表达式的代码, 其中不理解的部分简化如下:


#include<iostream>
#include<string>

using namespace std;



int main()
{
string Name;


// while(
bool t =[&]
{
cout<< "name:\n";
cin>>Name;
if(1)
return Name != "@q";
}();
// )

cout<< "\tsay "<<Name<<"\n\n"<< t <<endl;

return 0;
}


C++Primer第五版书中介绍lambda时(中文版P353)有这么一段话:
    默认情况下,如果一个lambda体包含return之外的任何语句,则编译器假定此lambda返回void。与其他返回void的函数类似,被推断返回void的lambda不能返回值。
    当我们需要为一个lambda定义返回类型时,必须使用尾置返回类型


    而上面那段代码没有使用尾置返回类型却有return之外的语句,并且在dev c++ 11标准下能够编译运行。
    
     

------解决思路----------------------
如果这么看似乎是矛盾的,我只能解答一半

貌似是在C++14 还是C++17中,取消了 只有一句话的限制
------解决思路----------------------
你应该知道,编译器不一定严格遵循C++标准,但为了移植性,你最好按标准写