とりあえず取り急ぎ。
とりあえず取り急ぎ。
人来ないね
MSVCが超絶バージョンアップしないかなー。
constexpr付いたら超歓喜するんだけどな。
カネないよ。
おれアマチュアです。アマチュアってカネかけたらだめだ。高価なパソコン、高価なツールをそろえてアマチュアといえるか?
ちゃんとこっちのURL向こうに貼ったん?
VSEE使ってる。
VC2015のconstexprは中途半端だな
SFINAEで定数式が必要なところにconstexpr関数を使ったときの動きがかなり不完全
フィードバックプリーズ。それでよくなるかもしれんし。
そして2015が出ることがわかってよかった。thx
「利用している言語についての質問では、
JavaScript(54.4%)、
SQL(48.0%)、
Java(37.4%)、
C#(31.6%)、
PHP(29.7%)」
「Stack Overflow」がユーザー動向に関する調査結果を公開、最もよく利用している言語はJavaScript、
習得したい言語はSwift、C++11、Rustなど:CodeZine
http://codezine.jp/article/detail/8630
2015/04/09 14:20
C++14 では意図通り動いたコードが C++17 では無限再帰して落ちるようになった
ttps://gcc.gnu.org/bugzilla/show_bug.cgi?id=83345
struct Base
{
virtual ~Base() {}
};
struct Proxy
{
Proxy(const Base&) {}
};
struct Derived: Base
{
operator Proxy()
{
return Proxy(*this);
}
};
int main()
{
Derived().operator Proxy();
}
原因はおそらく return value optimization を必須にするために規格文面をあれこれいじったときの副作用
でもまだはっきりと理解できてない
これは GCC のバグだな
struct Source;
struct Target
{
Target() = default;
Target(Source const&){
std::printf("OK\n");
value = 0;
}
int value = -1;
};
struct Source
{
operator Target(){
std::printf("Bad\n");
Target target;
target.value = 1;
return target;
}
};
int main()
{
Source source;
Target target{source};
std::printf("v = %d\n", target.value);
}
Target target{source} は direct-initialization であって
[over.match.ctor] より全てのコンストラクタがオーバーロードの候補となる
で overload resolution をするには implicit conversion sequence の優劣を比較するのだが
user-defined conversion sequence よりも standard conversion sequence の方が優先度が高い
だから上のプログラムは OK と表示しなければいけない (g++ -std=c++14 -pedantic ではそうなる) が
g++ -std=c++17 -pedantic では Bad と表示される
>>10 も同じバグに起因してると思う
……と bugzilla に報告しようと思ったら 5 年放ったらかしにしてたせいか
アカウント消えてた
どうせ誰か気づくだろうからここに書いてこの問題は俺の中で閉じた
すごい人がいる