// g++ test.cpp -std=c++14 -fopenmp -> OK (Compile Error)// clang++ test.cpp -std=c++11 -fopenmp -> NG (Passed, why?)#include<array>template<std::size_tNN>classFoo{public:staticconstexprautoN=NN;private:std::array<int,N>val;public:int&Val(conststd::size_ti){returnval[i];}constint&Val(conststd::size_ti)const{returnval[i];}};#include<iostream>usingF=Foo<10>;staticvoidBar(constF&f){#pragma omp parallel forfor(autoi=decltype(f.N)(0);i<f.N;i++){f.Val(i)=-i;// ****************** This should not be assignable ****************}for(autoi=decltype(f.N)(0);i<f.N;i++){std::cout<<f.Val(i)<<std::endl;}}intmain(){Ff;for(autoi=decltype(f.N)(0);i<f.N;i++){f.Val(i)=i;}Bar(f);return0;}
Comments (0)
HTTPSSSH
You can clone a snippet to your computer for local editing.
Learn more.